2017-07-26 90 views
-1

拿這個invoice.txt例如的Python:從另一個文本文件文本文件查找的關鍵字

發票號碼

INV-3337

訂單號

發票日期

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)

即 輸出是

發票日期

發票號碼

截止日期

訂單號

而不是發票中的訂單。TXT,這是

發票號碼

訂單號

發票日期

到期日

你能幫我做我應該如何繼續進行?

謝謝。

+0

你的文件很小? –

+0

對不起,最近的回覆:是的,他們是 – jokol

回答

1

這應該工作。您可以將您的發票數據加載到列表中,並將您的詞典數據加載到一個集合中,以便查找。

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]) 
+0

輸出出奇怪的是這樣的:「['Invoice Date \ n','\ n']」 它並沒有識別「訂單號」 – jokol

+0

@jokol看來你有額外的換行符。檢查我的編輯。 –

+0

它的工作原理!非常感謝 ! – jokol