2017-09-24 37 views
0
def read_wiktionary(file): 

    infile=open(file,'r')  
    content=infile.readlines() 
    infile.close()    
    d = dict()     
    for i in content:  
      d[i]=i[1]   

    return d 

文件在記事本上有大約30行。每一行有一個以逗號分隔的單詞,然後該單詞以英語顯示的出現次數。我知道i[1]是超出範圍,但我不能想出我們如何使它在範圍內,所以這個作品。請幫助。如何將包含每行2個項目的文本文件轉換爲Python中的字典?

文件內容:

a,1 
be,2 
see,3 

預期結果:

{'a':'1', 'be':'2', 'see':'3'} 
+0

可能的複製 - https://stackoverflow.com/questions/6740918/creating-a-dictionary-from-a-csv-file – Transhuman

+0

不幸的是SO不是學習小組,學習論壇或代碼編寫服務。 – wwii

+0

請閱讀[mcve]。如果您提供輸入和期望輸出的最小示例,它可以幫助我們。如果您詢問有關引發錯誤/異常的代碼的問題,請發佈完整的Traceback。 – wwii

回答

0

您是否嘗試過在逗號分割?

infile=open(file,'r')  
content=infile.readlines() 
infile.close()    
d = dict()     
for i in content: 
    assert len(i.split(',')) == 2 
    a, b = i.split(',') 
    d[a.strip()]=b.strip() 
return d 

請注意,我使用的是assert聲明,以確認你對具有由逗號分隔的兩個項目文件中的語句。我也是這樣的條款,所以他們缺乏前/後空格/換行符。


重構:

with open(file) as infile: 
    for line in infile: 
     line = line.strip() 
     key, value = line.split(',') 
     d[key] = value 
+0

這是首先想到的是用逗號分開,但是我做錯了,因爲有錯誤信息。我明白你的意思,因爲我在想同樣的事情,卻不知道如何編寫代碼。我只是試過這段代碼,但for循環給我一個語法錯誤消息,不能分配給函數調用。會攪亂它。我不知道地帶,但將使用幫助功能也看到解釋。 –

+0

對不起,我忘了你不能在循環的頂部調用split()。我的更改將循環體內的逗號分割字符串。 – JacobIRR

+0

謝謝!重構工作。我在外部循環做了同樣的分割。這工作雖然。我只是想弄清楚如何將值輸出作爲非字符串,因爲它是一個很大的數字。應該很容易,謝謝。 –

相關問題