我有一个以'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”
答案 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])