2013-04-29 42 views
1

我有一個數據文件,其中包含什麼需要成爲字典中的鍵和條目。我將閱讀和寫作條目並閱讀密鑰。我在其他地方發現了類似的東西在stackoverflow解釋,但我的生活無法理解它。任何幫助都比歡迎!需要從txt文件讀取到字典

engine oil/filter : 6000 
transmission fluid : 48000 
timing belt : 96000 
other belts : 96000 
brake fluid : 48000 
air filter : 48000 
spark plugs : 96000 
rear differential : 48000 

以上是需要讀入字典低於 的數據文件,它需要在結束了字典。

service_intervals = {'engine oil/filter' : 6000 , 'transmission fluid' : 48000 , 'timing belt' : 96000 , 
       'other belts' : 96000 , 'brake fluid' : 48000 , 'air filter' : 48000 , 
       'spark plugs' : 96000 , 'rear differential' : 48000} 

可能我用什麼樣的算法或功能,使這發生了嗎?

編輯:從偵探告訴我,ast.literal_eval可能是最好的解決方案,但我無法理解它。

回答

5

你不需要ast.literal_eval。剛上:strip逐行讀取,split,解析整數,並把值到字典:

my_dict = {} 
with open('some file.txt', 'r') as f: 
    for line in f: 
     key, value = line.split(':') 
     my_dict[key.strip()] = int(value) 
+0

行,所以只是爲了確保我真正理解,而不是複製,line.split會讀一行一行,而鍵,值表示該鍵首先出現在該行上,然後該值在「:」之後?如果是這樣,那麼這是總的意義。非常感謝!! – gaircity 2013-04-29 01:16:10

+0

@gaircity:'split'不會逐行讀取; f中的'for line'逐行讀取。對於每一行,split都會將其分割爲':'前面的部分和':'後面的部分。然後將結果解壓到變量'key'和'value'中。 – icktoofay 2013-04-29 01:27:25

+0

split(':')將字符串分隔爲n-1個冒號的n個字段的列表。實際上使用line.partition(':')可能會更好。 「對於f中的行」實際上是逐行讀取的部分。 – dstromberg 2013-04-29 01:28:03