2013-04-29 58 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