将String转换为float并将该float指定为字典中的值?

时间:2013-05-05 15:14:28

标签: python python-2.7

我有一个以'word'\t'num'\n为字符串的文件。我想将它转换为我已经完成的字典,除了如何将值'num'转换为浮点数,因此dict的格式为`{word: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”

2 个答案:

答案 0 :(得分:3)

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

但是,您至少有一个行,其中不仅仅是行上的制表符或第二个值不是一个浮点数。尝试将代码更改为:

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

这会将行拆分为最后一个\t制表符而不是任何空格。这会在一行上留下可能多个标签的行,并假设只有最后一个值是浮点数。

如果仍然失败,代码会打印出问题行,向我们展示我们可能需要修复的其他内容。

答案 1 :(得分:1)

因为您的格式为: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])