以此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中的订单,即
发票号
订单号
发票日期
截止日期
你能帮助我进一步了解吗?
谢谢。
答案 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])