1

我从 CSV 文件制作了一个列表。它看起来像这样:

['18', '29', '0'...'0', '-14', '9']

它在开头有一个文本元素,我弹出了它。现在,Python 不能像使用正确的数字那样使用列表元素。例如,每当我尝试将元素解析为浮点数时,我都会收到错误消息:

ValueError: could not convert string to float: -

我的代码如下所示:

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 正确地将破折号解析为数字?

4

1 回答 1

7

看起来您正在创建的列表是一维的,但是当您尝试解析它时,您将其视为 2D 列表,该列表将尝试将每个元素中的每个字符转换为浮点数(因此在尝试执行时会引发错误float('-')) . 尝试用以下内容替换该行以解决问题:

list2 = map(float, list1)

您还应该尝试print list1在该行之前添加以确认列表具有您认为的结构。

于 2012-06-29T23:14:24.637 回答