2015-06-10 1 views
-4

В этом случае есть 3 класса, которые представлены значениями 0, 1 и 2. Я хотел бы извлечь информацию, относящуюся к классу 1 из другого текстового файла с именем fileA.txt. Я хотел бы знать, как это решить, используя python.

Например:

class.txtPython: Как извлечь данные в текстовом файле на основе информации о классе из другого текстового файла?

0 
0 
1 
2 
2 
1 
1 

fileA.txt

a=[1,3,2,1] 
b=[3,2] 
c=[3,2,1] 
d=[3,3] 
e=[4,5,6] 
f=[3,2,3] 
g=[2,2] 

Ожидаемый результат:

c=[3,2,1] 
f=[3,2,3] 
g=[2,2] 

Может ли кто-Хель p me?

+0

Вы писали одну строку кода перед тем, как задать вопрос? – tamasgal

+1

Итак, вы хотите выбрать те же строки (по номеру строки) из 'fileA.txt' как строки из' class.txt', что такое '1'? –

+0

Да, я хочу выбрать те же строки. – Xiong89

ответ

2

Прочитайте файл "class.txt" и создать список классов:

with open("class.txt", "rt") as f: 
    classes = [int(line) for line in f.readlines()] 

Прочитайте файл "fileA.txt" и создать список правильных линий:

with open("fileA.txt", "rt") as f: 
    lines = [line for index, line in enumerate(f.readlines()) if classes[index] == 1] 

Показать результаты:

print "".join(lines) 
1

не решение Python, но мне это нравится :)

$ grep -n "^1$" class.txt | cut -d: -f1 | while read linenumber 
do 
    sed -n "${linenumber}p" < fileA.txt 
done 

Выходные:

c=[3,2,1] 
f=[3,2,3] 
g=[2,2] 

Инструменты, используемые являются:

1

Это intu itive способ сделать это

classes = [l.strip() for l in open("class.txt").readlines()] 
indices = [i for i, x in enumerate(classes) if x == "1"] 

with open('fileA.txt') as file: 
    for index,line in enumerate(file): 
     if(index in indices): 
      print(line) 
Смежные вопросы