2013-06-12 85 views
0

我有一個txt文件中的頭文件和值的列表,我想閱讀並寫入字典。名稱是關鍵字,0或1是值。從文本文件創建專門的詞典

txt文件的格式是這樣的:

#define NAME 0 
#define MOREOFTHESAME 1 

的名稱都是不同的長度,但這些值是0或1 我也想移除每一行中的#define所有。

回答

2

您可以使用dict這裏,dict期待與鍵值對的序列。您可以使用str.split拆分這些行,並使用列表分片將最後兩個項目傳遞給dict

with open('abc') as f: 
    dic = dict(line.split()[1:] for line in f) 

>>> print(dic) 
{'NAME': '0', 'MOREOFTHESAME': '1'} 

str.split例子:

>>> strs = "#define MOREOFTHESAME 1" 
>>> strs.split() 
['#define', 'MOREOFTHESAME', '1'] 
>>> strs.split()[1:] 
['MOREOFTHESAME', '1'] 

使用字典,理解(在py2.7 +工程):

with open('abc') as f: 
    dic = {k:v for k,v in (line.split()[1:] for line in f)} 
...  
>>> dic 
{'NAME': '0', 'MOREOFTHESAME': '1'} 
+0

感謝您的解釋! – coderkid

3

,只需拆分在每個空間中的直線,而忽視了第一次enrty:

with open('myFile.txt', 'rb') as fil: 
    myDict = {} 
    for line in fil: 
     _, key, value = line.split() 
     myDict[key] = value 
+1

爲什麼二進制讀? 'line.split()'應該這樣做,不需要傳入'''' – iruvar

+0

@ 1_CR你說得對。以「二進制」模式打開文本文件實際上對文本文件沒有影響(據我所知),但如果忘記二進制選項,則可能會在Windows中搞亂二進制文件。因此,對於Windows和Linux這兩種類型的文件,始終使用'rb'已成爲一種習慣。 – Dhara