基于条件追加文件的前几行

2024-07-05 09:55:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,里面有1000行文本。示例如下:

person1
person2

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

person5
person6

person7
person9

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

每行以“p”或“h”或“-”开头。当在读取文件时遇到“havepaid”时,我想将前两行追加到一个列表中,这样我就可以区分已付款和未付款的人。有什么帮助吗?在

干杯, 查夫


Tags: 文本示例have文本文件person1paidperson2person3
3条回答
data=open("file").read().split("\n\n")
for rec in data:
    if "have paid" in rec:
         print rec.split("have paid")[0]

这将正确解析示例文件:

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[''])

结果:

^{pr2}$

只需迭代文件,将每一行放入列表或哈希表中。然后迭代集合,对于每个匹配,使用match-1和-2的索引获取前两个条目。在

相关问题 更多 >