Добавить предыдущие строки файла на основе условия - PullRequest
0 голосов
/ 11 марта 2010

У меня есть текстовый файл с несколькими 1000 строками текста. Образец приведен ниже:

person1
person2

person3
person4
have paid
---------

person5
person6

person7
person9

person10
person11
have paid
---------

Каждая строка начинается с «p», «h» или «-». Когда при чтении файла встречается слово «заплатил», я хочу добавить две предыдущие строки в список, чтобы можно было различать людей, которые заплатили, и людей, которые не заплатили. Любая помощь?

Cheers, Chav

Ответы [ 3 ]

1 голос
/ 11 марта 2010
data=open("file").read().split("\n\n")
for rec in data:
    if "have paid" in rec:
         print rec.split("have paid")[0]
0 голосов
/ 11 марта 2010

Это правильно анализирует ваш файл примера:

with open('yourfile') as f:
    result = {'have paid': [], '': []}
    current = []
    for line in f:
        line = line.strip().strip('-')
        if line in result:
            result[line].extend(current)
            current = []
        else:
            current.append(line)

print 'These have paid:', ','.join(result['have paid'])
print 'These have not paid:', ','.join(result[''])

Результат:

These have paid: person3,person4,person10,person11
These have not paid: person1,person2,person5,person6,person7,person9
0 голосов
/ 11 марта 2010

Просто переберите файл, поместив каждую строку в список или хеш-таблицу. Затем выполните итерацию коллекции и для каждого совпадения возьмите две предыдущие записи, используя индекс соответствия -1 и -2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...