我正在尝试使用float()
将以下列表转换为数字。但它总是说ValueError: could not convert string to float
。
我知道当文本中的某些内容无法被视为数字时会发生此错误。但我的名单似乎还可以。
a = ['4', '4', '1', '1', '1', '1', '2', '4', '8', '16', '3', '9', '27', '81', '4', '16', '64', '256', '4', '3']
b = [float(x) for x in a]
答案 0 :(得分:0)
a = ['4', '4', '1', '1', '1', '1', '2', '4', '8', '16', '3', '9', '27', '81', '4', '16', '64', '256', '4', '3']
b = [float(x) for x in a]
完美无缺。
['4', '4', '1', '1', '1', '1', '2', '4', '8', '16', '3', '9', '27', '81', '4', '16', '64', '256', '4', '3']
b = [float(x) for x in a]
没那么多。
您的错误消息显示您的其中一个条目是列表中的单个引号或空元素。例如,
a = ['the', '4', '1', '1', '1', '1', '2', '4', '8', '16', '3', '9', '27', '81', '4', '16', '64', '256', '4', '3']
b = [float(x) for x in a]
抛出错误:
ValueError: could not convert string to float: the
答案 1 :(得分:0)
您发布的列表完全可以使用您的方法。
要么a
已经定义了一个字符串,并且没有指向该列表。
该列表包含一个数字。
只是为了验证尝试
map(int,a) #if no errors you have all numbers
然后尝试
set(map(type,a)) #if outputs {str} you should be good.
无论哪种方式,您的错误都无法重现,并在您的问题中发布更多详细信息。
答案 2 :(得分:0)
问题正是Traceback日志所说的:无法将字符串转换为float
您可以删除空格,然后检查字符串中的数字。
f = open('mytext.txt','r')
a = f.read().split()
a = [each.strip() for each in a]
a = [each for each in a if each.isdigit() ]
b = [float(each) for each in a] # or b = map(float, a)
print b
# just to make it clear written as separate steps, you can combine the steps
答案 3 :(得分:-1)
您可以使用
转换列表如果列表中有任何字符串,则会收到错误消息
这样ValueError: could not convert string to float
>>> a = ['4', '4', '1', '1', '1', '1', '2', '4', '8', '16', '3', '9', '27', '81', '4', '16', '64', '256', '4', '3']
>>> b = list(map(float, a))
>>> b
输出
[4.0, 4.0, 1.0, 1.0, 1.0, 1.0, 2.0, 4.0, 8.0, 16.0, 3.0, 9.0, 27.0, 81.0, 4.0, 16.0, 64.0, 256.0, 4.0, 3.0]