Python 将字符串转换为浮点数,并在字典中将该浮点数指定为值?
我有一个文件,它将Python 将字符串转换为浮点数,并在字典中将该浮点数指定为值?,python,python-2.7,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_o
'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”您正在正确地将值转换为float 但是,您至少有一行,其中的不仅仅是该行上的制表符,或者第二个值不是浮点。尝试将代码更改为:
key, value = line.rsplit('\t', 1)
try:
dict_output[key] = float(value)
except ValueError:
print 'Unexpected line: {!r}'.format(line)
这将仅在最后一个\t
制表符上拆分行,而不是在任何空格上拆分行。这会使一行上可能有多个制表符的行保持不变,并假定只有最后一个值是浮点值
如果仍然失败,代码将打印出问题行,向我们显示可能需要修复的其他问题。您正在正确地将值转换为浮点值 但是,您至少有一行,其中的不仅仅是该行上的制表符,或者第二个值不是浮点。尝试将代码更改为:
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])
因为您的格式是:
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])
这个答案也是正确的,我选择的答案在你之前发布,所以我已经修复了错误。这个答案也是正确的,我选择的答案在你之前发布,所以我已经修复了错误。