将字符串转换为浮点数并将该浮点数赋值为字典中的值?

问题描述:

我有一个具有'word'\t'num'\n作为字符串的文件。我想将它转换为我已经完成的字典,除了如何将值'num'转换为浮点数,以便该字典具有这种格式{{:num},并且该字符串不是一个字符串但是是一个浮点数。将字符串转换为浮点数并将该浮点数赋值为字典中的值?

这是到目前为止我的脚本:

file_stream = open(infile) 
file_list = file_stream.readlines() 
dict_output = {} 
for line in file_list: 
    tmp = line.split() 
    dict_output[tmp[0]] = float(tmp[1]) 

如果我删除float()脚本运行正常,它创造与价值作为字符串的字典。当我尝试将字符串强制转换为int时,出现错误消息: “ValueError:无法将字符串转换为float:stand”

您正在将值正确转换为浮点值。

但是,你至少有一个线在比刚上线或第二值,制表符更是一个浮动。试着改变你的代码:

key, value = line.rsplit('\t', 1) 
try: 
    dict_output[key] = float(value) 
except ValueError: 
    print 'Unexpected line: {!r}'.format(line) 

这对分割刚刚过去的\t制表符,而不是在任何空白行。这留下了一行上可能有多个多个选项卡的行,并假定只有最后一个值是浮点数。

如果仍然失败,代码将打印问题行以向我们展示我们可能需要修复的问题。

因为你的格式是:word'\t'num'\n所以word和num之间是t(标签)。你应该从line.split()更改为`line.split('\ t')。所以,完整的代码应该是:

file_stream = open(infile) 
file_list = file_stream.readlines() 
dict_output = {} 
for line in file_list: 
    tmp = line.split('\t') 
    dict_output[tmp[0]] = float(tmp[1]) 
+0

这个答案也是正确的,我选择的答案已经发布在你的之前,所以我已经修复了错误。 – spitfiredd 2013-05-05 15:56:07