2014-10-31 81 views
-3

我正在嘗試讀取txt文件並將數據放入字典中。我的文件看起來像這樣:如何分割文件中的行並將數據放入python中的字典

Alex:3 
John:6 
Sam:8 

基本上,一個單詞和整數用冒號分隔。我想打開並讀取文件,將冒號分隔的每一行分開,並將數據放入如下字典中:

{'Alex':3,'John':6,'Sam':8}

到目前爲止,我的代碼如下所示:

d = {} 
f = open('scores.txt', 'r') 
for line in f.readlines(): 
    line = line.strip() 
    name = line.split(":") 

如何分配名稱作爲鍵和整數作爲值,並把它放進字典?

+2

'當d =字典(line.strip()分割( ':'),例如,開放( 'scores.txt')線)'僅包含代碼 – falsetru 2014-10-31 17:22:18

回答

3

像這樣:

d = {} 
f = open('scores.txt', 'r') 
for line in f.readlines(): 
    name,score = line.split(":") 
    d[name] = int(score) 

str.split()返回字符串中的所有標記列表。您可以使用我展示的語法獲取這兩個值。如你所見,你可以通過名稱變量在字典中索引它。

編輯:由於@MauroBaraldi在評論中指出,你不需要line.strip()了,因爲int()會爲你做這項工作。

+1

只包含代碼和沒有解釋的答案通常沒有幫助。 – ErlVolton 2014-10-31 17:24:51

+0

@ErlVolton我通常先發布代碼,然後立即編輯更詳細的描述。抱歉。 – phantom 2014-10-31 17:27:18

+0

沒關係,在你編輯之後,我提出了你的答案。 – ErlVolton 2014-10-31 17:27:45

0

你的問題是與

name = line.split(":") 

split()會返回一個列表。你可以解開列表如下:

name, othervalue = line.split(":") 

然後執行:

mydict[name] = othervalue 
-2
d = {} 
f = open('scores.txt', 'r') 
for line in f: 
    line = line.strip() 
    name,age= line.strip(":") 
    d[name]=age 

在上面的代碼,line.strip()將刪除換行符,line.split(":")將分裂的「字符串: 「,所以你會得到兩個價值的名稱和年齡將被存儲。 d[name]=age名稱是關鍵,年齡將在值存儲

+2

答案沒有任何解釋通常沒有幫助。 – ErlVolton 2014-10-31 17:24:32

+1

謝謝downvoting – Hackaholic 2014-10-31 17:24:53

0

以下是解決問題的另一種方法。

with open('scores.txt') as fp: 
    result = {} 
    for line in fp.readlines(): 
     key, value = line.split(':') 
     result[key] = int(value) 

一個很好的做法是使用with打開文件。當離開上下文時它會自動關閉。

-1

您可以使用以下代碼來獲得所需的輸出。您可以使用拆分來分隔單詞。 rstrip用於刪除換行符。

f = open('file name') 

dic = {} 

for l in f: 

    k,v = l.split(':') 
    v=v.rstrip('\n') 

    if k in dic: 

     dict.update({k:v }) 

    else: 

     dic[k] = [v] 
    print dic 

輸出:

{'John': ['6'], 'Alex': ['3'], 'Sam': ['8']} 
相關問題