2012-12-04 105 views
1

所以,我有這個文件有數據設置是這樣的:Python 3:從.txt文件中提取數據?

Bob 5 60 
Carl 7 80 
Rick 8 100 
Santiago 7 30 

我需要每一部分分成三個不同的列表。一個用於名稱,一個用於第一個號碼,另一個用於第二個號碼。

但我真的不明白,我究竟如何提取這些部分?另外,假設我想用第一行創建一個元組,並將每個不同的部分(名稱,第一個數字和第二個數字)組合成一個元組?

我只是不明白我如何提取信息。 我剛剛學會了如何讀取和寫入文本文件...所以我很無能。

編輯:作爲一個說明,文本文件已經存在。我正在處理的程序需要讀取文本文件,該文件的數據以我列出的方式格式化。

+0

也許你想使用空格字符分割的字符串? – BorrajaX

回答

5

您可以分割的空白每行:

with open(yourfile) as f: 
    rows = [l.split() for l in f] 

names, firstnums, secondnums = zip(*rows) 

zip(*iterable)重新排列3列到3所列出。

0

Pickle模塊不是理想的嗎? Pickle賦予Python功能來加載和保存需要在Python中「可用」的東西,所以pickle不用從文本文件中導入字符串並解析它,而是可以加載它併爲您提供實際的容器跟...共事。

例如:

import pickle 

myList = ["Bob", 1, 2] 
listToBeSaved = pickle.dumps(myList) # write this data to your save file 
#insert code where you work with the file and save it 
#.........  
#upon needing to open and work with this file 
listToBeLoaded = open(fileYouWroteTo) 
listTranslated = pickle.loads(listToBeLoaded) # turns the loaded data back into a proper list 
+0

我不認爲泡菜在這裏特別適合。 OP已經有特定格式的數據,醃菜不會讀取。 –

+0

我建議pickle b/c是zip()的例子,雖然只是將數據移動到一系列元組中,但也只是吐出一堆字符串,就像open(yourfile)一樣。如果OP想要使用(顯然)與名稱相關的值,現在他們正在編寫更多代碼來將字符串轉換爲整數。如果這與他們的項目無關,並且他們不關心他們能夠保存/加載Python容器(或者他們正在使用的數據絕對必須採用這種格式,對此沒有任何疑問),那麼沒有什麼大不了的。 – 2012-12-05 07:28:31

+0

我的問題是我已經有一個文本文件,我需要從中獲取信息。我需要它能夠接受任何文件,如果它的格式與OP一樣,並且基本上讀取它。我無法手動創建列表。 >< – Ikiro