将文本列表转换为数字?

时间:2016-09-09 08:05:59

标签: python list text

我正在尝试使用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]

4 个答案:

答案 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

  1. 如果你有一个只有数字的字符串,那么python足够聪明,可以做你正在尝试的东西并将字符串转换成浮点数。
  2. 如果您的字符串中包含非数字字符,则转换将失败,并为您提供错误。
  3. 您可以删除空格,然后检查字符串中的数字。

     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]