【问题标题】:Append previous lines of a file based on a condition根据条件附加文件的前几行
【发布时间】:2010-03-11 11:16:39
【问题描述】:

我有一个包含 1000 行文本的文本文件。示例如下:

person1
person2

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

person5
person6

person7
person9

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

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

干杯, 查夫

【问题讨论】:

    标签: python list append


    【解决方案1】:
    data=open("file").read().split("\n\n")
    for rec in data:
        if "have paid" in rec:
             print rec.split("have paid")[0]
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        这会正确解析您的示例文件:

        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
        

        【讨论】:

          猜你喜欢
          • 2023-01-26
          • 1970-01-01
          • 2019-10-05
          • 1970-01-01
          • 1970-01-01
          • 2017-06-22
          • 2016-11-25
          • 2019-11-07
          • 2019-01-28
          相关资源
          最近更新 更多