Чтение файлов построчно и поиск шаблонов в python - PullRequest
0 голосов
/ 03 января 2019

Я читаю файл построчно и сохраняю информацию, но некоторые строки немного отличаются и должны быть отсортированы.

У меня есть текстовый файл с 502 строками, и это что-то вроде

VV item1 value1 item2 value2 itemA valA
VV item1 value1 item2 value2 itemB valB
...

Я сохраняю эти значения, читая текст построчно, но между строками есть различия.Вместо itemA у меня иногда есть itemB.Сначала я попытался

ifn = open(afile,'r')
while 1:                                                                                                                                                                                                                                                                       
    l = ifn.readline() 
    print(int(l.split(' ')[1])) #prints value1 as expected
    if re.search('itemB', l):
            print(int(l.split(' ')[6]))

Это последнее утверждение печати ничего не печатает, хотя и предполагает и полностью игнорирует.

Затем я также попытался

ifn = open(afile,'r')
for i,l in enumerate(ifn):                                                                                                                                                                                                                                                           
        print( linecache.getline(ifn.name,i).split(' ')[1]) )

, ноперед реализацией оператора re.search он печатает пустую строку.

Буду признателен за любую помощь по любому из подходов.

Спасибо.

1 Ответ

0 голосов
/ 03 января 2019

Я подозреваю, что ваш цикл while + readline () вызывает проблему. Этот код должен работать, если вы используете менеджер контекста и цикл for:

with open('test.txt','r') as file:                                                                                                                                                                                                                                             
    for line in file:
        if 'itemB' in line:
            print(line.split(' ')[5])

Кроме того, похоже, что вы пытаетесь получить доступ к 6-му элементу в строке - это означает, что вам нужно использовать индекс 5

...