2016-03-05 56 views
2

我是相當新的python,我需要幫助修改我的腳本。我很困難。任何輸入將不勝感激。 TIA!查找和寫入多個變量從一個文件到另一個

在original_file文字是這樣的:

<Time> 
1159 
</Time> 
<Date> 
03042016 
</Date> 
<Time> 
1300 
</Time> 
<Date> 
03052016 
</Date> 
... 

我的腳本:

with open("original_file.txt", "r") as input_file, \ 
open("result_file.txt", "w") as output_file: 
    input_file.seek(0) 
    copy = False 
    for line in input_file: 
     if line.strip() == "<Time>" or line.strip() == "<Date>": 
      copy = True 
     elif line.strip() == "</Time>" or line.strip() == "</Date>" : 
      copy = False 
     elif copy: 
      output_file.write(line) 

我的腳本工作,但輸出看起來是這樣的:

1159 
03042016 
1300 
03052016 

我想要的輸出:

1159, 03042016 
1300, 03052016 

回答

0

維護你的代碼,它應該是這個樣子

with open("original_file.txt", "r") as input_file, \ 
open("result_file.txt", "w") as output_file: 
    input_file.seek(0) 
    values = [] 
    for line in input_file: 
     if line.strip() == "<Time>" or line.strip() == "<Date>": 
      pass 
     elif line.strip() == "</Time>": 
      pass 
     elif line.strip() == "</Date>": 
      line = ",".join(values) 
      output_file.write(line) 
      values 
     else: 
      line.append(line.strip()) 

但是,你可以使用一些庫,如BeautifulSoup,這是一個XML解析器。你的工作大大減少

使用這個庫,你的代碼最終會被這樣的事情:

from bs4 import BeautifulSoup 

soup = BeautifulSoup(open("original_file.txt.html")) 
with open("result_file.txt", "w") as output_file: 
    results = zip(soup.find_all('Time'), soup.find_all('Date')) 
    for time, date in results: 
     output_file.write(",".join([time,date])) 
+0

喜拉斐爾,謝謝你這麼多的投入。 我試過了代碼,但它在第8行保持警告我語法錯誤。(最後一行任何文本都是第7行)。 – spiderlily

+0

@spiderlily有一個圓括號丟失了lol。糾正最後一個括號(我剛編輯它) – RafaelC

相關問題