将带有破折号的列表转换为数字

use*_*295 1 python

我从CSV文件中创建了一个列表.它看起来像这样:

['18', '29', '0'...'0', '-14', '9']
Run Code Online (Sandbox Code Playgroud)

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

ValueError: could not convert string to float: -
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

list2=[[float(column) for column in row] for row in list1]
Run Code Online (Sandbox Code Playgroud)

或这个:

list2 = [map(float, x) for x in list1]
Run Code Online (Sandbox Code Playgroud)

两个版本都产生相同的结果.如果我尝试不同的数据类型,我会得到如下消息:

ValueError: invalid literal for int() with base 10: '-'
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何让Python将破折号正确解析成数字?

Tre*_*vor 7

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

list2 = map(float, list1)
Run Code Online (Sandbox Code Playgroud)

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