将字符串转换为浮点数并将该浮点数赋值为字典中的值?
问题描述:
我有一个具有'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])
这个答案也是正确的,我选择的答案已经发布在你的之前,所以我已经修复了错误。 – spitfiredd 2013-05-05 15:56:07