Python 将带破折号的列表转换为数字
我从CSV文件中创建了一个列表。看起来是这样的:Python 将带破折号的列表转换为数字,python,Python,我从CSV文件中创建了一个列表。看起来是这样的: ['18', '29', '0'...'0', '-14', '9'] list2=[[float(column) for column in row] for row in list1] 它的开头有一个文本元素,我弹出了它。现在,Python不能像处理正确的数字那样处理列表元素。例如,每当我尝试将元素解析为浮点数时,就会收到错误消息: ValueError: could not convert string to float: - 我的代
['18', '29', '0'...'0', '-14', '9']
list2=[[float(column) for column in row] for row in list1]
它的开头有一个文本元素,我弹出了它。现在,Python不能像处理正确的数字那样处理列表元素。例如,每当我尝试将元素解析为浮点数时,就会收到错误消息:
ValueError: could not convert string to float: -
我的代码如下所示:
['18', '29', '0'...'0', '-14', '9']
list2=[[float(column) for column in row] for row in list1]
或者这个:
list2 = [map(float, x) for x in list1]
两个版本产生相同的结果。如果我尝试不同的数据类型,会收到如下消息:
ValueError: invalid literal for int() with base 10: '-'
有人能告诉我如何让Python正确地将破折号解析为数字吗?看起来您创建的列表是1D的,但当您尝试解析它时,您将其视为2D列表,该列表将尝试将每个元素中的每个字符转换为浮点(因此在尝试执行
浮点('-')
)时会抛出错误。尝试用以下内容替换线路以解决问题:
list2 = map(float, list1)
您还应该尝试在该行之前添加
print list1
,以确认列表具有您认为它具有的结构。看起来您正在创建的列表是1D,但当您尝试解析它时,您将其视为2D列表,该列表将尝试将每个元素中的每个字符转换为浮点(因此,它在尝试执行浮点('-')
)时会引发错误。请尝试用以下内容替换该行以修复此问题:
list2 = map(float, list1)
您还应该尝试在该行之前添加
print list1
,以确认列表具有您认为的结构。float('-14')
在这里工作正常。错误一定在其他地方?列表到底是什么?因为float('-14'))
给出了-14.0
。您得到的错误似乎是因为列表中有一个-
单独的列表…您确定列表1
包含其他列表吗?我不确定列表的数据类型,但第二个版本应该适用于字符串,不是吗?为什么将其视为行/列对?完整列表太长,无法在此处发布,但所有数字都与上面的一样。float('-14')
在此处工作正常。错误一定在其他地方?具体列表是什么?因为float('-14'))
给出了-14.0
。您得到的错误似乎是因为列表中有一个-
单独的列表…您确定列表1
包含其他列表吗?我不确定列表的数据类型,但第二个版本应该适用于字符串,不是吗?为什么将其视为行/列对?完整列表太长了,无法在这里发布,但都是上面的数字。