2012-10-09 51 views
-4

什麼我做的是,我有一個包含一些數據如下文件:解析和Python中的文件的添加內容

ben  | 2 | 40 
germany | 6 | 60 

我需要什麼樣的輸出是::

ben  | 2 | 40 
germany | 6 | 60 

field 1 = 8 
field 2 = 100 

請給我一些解決方案,以在Python中繼續前進。

+2

http://docs.python.org/library/csv.html –

+0

你有沒有寫過任何代碼來讀取文件並打印它 - 給出你想要的輸出的前兩行?如果是這樣,請發佈該代碼。如果不是,請查看Python文檔,例如http://docs.python.org/py3k/tutorial/inputoutput.html。之後,請閱讀http://docs.python.org/py3k/library/stdtypes.html?highlight=split#str.split – Dave

回答

0

可能有一個更優雅的方式來做到這一點...

results = [0, 0] 
with open("\path\to\file.txt") as f: 
    for line in f: 
     values = line.split("|") 
     results[0] += int(values[1]) 
     results[1] += int(values[2]) 

print("field 1 = " + str(results[0]), "field 2 = " + str(results[1])) 
1

這有一個家庭作業給我的香氣,所以我要去嘗試堅持爲客戶提供一些指引,而不是徹底的解決方案。

您可以使用Python的open()函數來打開文件。得到的對象可以循環迭代,如for line in myfile:。當你完成這個文件時,你應該調用myfile.close(),你可以用「追加」模式重新打開它,在最後寫出答案。

每一行都將是一個字符串,您可以撥打line.split('|')將行分成塊。我喜歡使用多個作業:name, col1, col2 = line.split('|')。您可能需要使用int()將字符串格式的數字強制轉換爲整數格式,以便您可以將它們相加。

我認爲這可能是一個非常可靠的開始,對吧?

+0

我已經完成了上面提出的建議,只是需要如何到達該領域然後我使用sum()來獲得我的輸出。但是我知道我有答案。所以會照顧它並且知道我的錯誤。 – vivs