Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字符串转换为浮点数,并在字典中将该浮点数指定为值?_Python_Python 2.7 - Fatal编程技术网

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])

这个答案也是正确的,我选择的答案在你之前发布,所以我已经修复了错误。这个答案也是正确的,我选择的答案在你之前发布,所以我已经修复了错误。