2014-01-20 126 views
0

我環顧四周,但我還沒有真正找到解決方案。我有外部的TXT文件,其中包含用逗號分隔的字符串,每個「項目」是在新行:從外部文件轉換字符串到Python字典

item1: value1 
item2: value2 

等你得到的想法。

我正在創建與字典一起工作的腳本,我需要將該文件轉換爲Python字典。我仍然是一個新手,所以我有點失落。

我曾經嘗試這樣做,我發現這裏String to dictionary

的dict((鍵,無)在string.split(鍵 ':'))

但我不能弄清楚如何用代表一個鍵的值代替'無'。我確實嘗試過詞典((key,value)),但'value'無法識別。

回答

0

可以解決這個問題是這樣的:

dict((key, value) for key, value in [string.split(': ')]) 

需要注意的是,如果有的多個': '字符串中,這將失敗。

這個代碼和平就像下面:

>>> string = 'hello: world' 
>>> string.split(': ') 
['hello', 'world'] 
>>> a, b = string.split(': ') 
>>> a 
'hello' 
>>> b 
'world' 

值將是字符串這種方式。如果它們應該是整數,則使用(key, int(value))。如果沒有整數值,這也是不安全的。

備註:從Python 2.7開始,您可以使用字典解析。這是一個有點清潔:

{key: value for key, value in [string.split(': ')]} 

然而這將,讓你有很多大小1.字典我認爲你需要像這樣:

{key: value for line in fileobject.readlines() for key, value in [line.split(': ')]} 

您也可以使用直接分裂:

dict(tuple(string.split(': ')) for string in fileobject.readlines()) 
+0

這是完美的謝謝你。感謝你的建議,我完成了我的第一個節目/ miniscript。你看我不是一個程序員,所以我完全爲此感到興奮(你可以在這裏查看:https://github.com/ondrejsynacek/flashCardStudy) – user3056783

+0

無論如何,我使用Python 2.7,所以你發佈的大多數東西都沒有't工作,但這個沒有: '{鍵:在fileobject.readlines()中的鍵的值,在[line.split(':')]}的值}' 我仍然試圖包裹我的頭周圍。我還沒有得到Python如何識別變量_line_,因爲它沒有在任何地方聲明。我相信這與.readlines()函數有關。 我想我需要做更多的關於_for_和字符串模塊以及字典的研究。 – user3056783

+0

「行」變量分配在for循環中。 Python並沒有真正聲明變量,他們奇蹟般地跳入存在。 – Noctua

0

我問周圍#Python(FreeNode的)幫助我這個問題,以及和人們似乎更「純」的解決方案。

的FileObject =開放( '的text.txt', 'R')

FDICT = {}

用於線在fileobject.readlines():

爲鍵,在值[line.split( ':')]:

FDICT [鍵] =值

這對我來說似乎更加乾淨,更容易理解。