Python:从另一个文本文件中查找文本文件中的关键字

时间:2017-07-26 11:34:44

标签: python

以此invoice.txt为例

  

发票编号

     

INV-3337

     

订单号

     

12345

     

发票日期

     

2016年1月25日

     

截止日期

     

2016年1月31日

这就是dict.txt的样子:

  

发票日期

     

发票编号

     

截止日期

     

订单号

我试图在'invoice.txt'中找到'dict.txt'中的关键字,然后在2列数据表中添加它和它之后的文本(但在下一个关键字之前)。

所以它看起来像:

col1 ----- col2

发票编号------ INV-3337

订单号---- 12345

这是我到目前为止所做的事情

with open('C:\invoice.txt') as f:
    invoices = list(f)

with open('C:\dict.txt') as f:
    for line in f:
        dict = line.strip()
        for invoice in invoices:
            if dict in invoice:
                print invoice

这是有效的,但排序是错误的(就像在dict.txt中一样,而不是在invoice.txt中)

即。 输出是

  

发票日期

     

发票编号

     

截止日期

     

订单号

而不是invoice.txt中的订单,即

  

发票号

     

订单号

     

发票日期

     

截止日期

你能帮助我进一步了解吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

这应该有效。您可以将发票数据加载到列表中,并将dict数据加载到集合中以便于查找。

with open('C:\invoice.txt') as f:
    invoice_data = [line.strip() for line in f if line.strip()] 

with open('C:\dict.txt') as f:
    dict_data = set([line.strip() for line in f if line.strip()])

现在迭代发票,一次2个并打印出匹配的行集。

for i in range(0, len(invoice_data), 2):
    if invoice_data[i] in dict_data:
        print(invoive_data[i: i + 2])