Python 是否将n列表中所有列表的元素转换为浮点数?

Python 是否将n列表中所有列表的元素转换为浮点数?,python,data-cleaning,Python,Data Cleaning,我有一个列表列表,如下所示: ['1','1','13','23','1.0','9','20051102','20170330','16','9','2','2','2','24','46','7232.17'],['2','1','13','23','23','1.0','1.0','9','20051102','9','20051102','8','3','0','2','15','4','5','4','4','19','51','6171.145',',['4', '1', '13',

我有一个列表列表,如下所示:

['1','1','13','23','1.0','9','20051102','20170330','16','9','2','2','2','24','46','7232.17'],['2','1','13','23','23','1.0','1.0','9','20051102','9','20051102','8','3','0','2','15','4','5','4','4','19','51','6171.145',',['4', '1', '13', '23', '1.0', '9', '20051102', '20170329', '22', '2', '1', '4', '18', '42', '5479.682'], ['5', '1', '13', '23', '1.0', '9', '20051102', '20170328', '15', '5', '6', '9', '28', '37', '9411.681'], ['6', '1', '3', '27', '0.0', '9', '20051228', '20170303', '6', '1', '0', '0', '14', '21', '3757.115'], [7',1',3',27',0.0',9',20051228',20170301',1',0',1',3',40',45',10521.261',[8',1',3',27',0.0',9',20051228',20170320',2',0',0',0',174 171',43113.562']

它由以下代码创建:
lines=[[x代表line.strip().split(',')]中的x代表myfile.readlines()[1:3000]]

现在,所有列表中的所有元素都是字符串,如果我尝试
lines=[[float(x)for x in line.strip().split(',')]for line in myfile.readlines()[1:3000]]
我收到一个错误

问题是,如果我尝试以下方法:

如果str在行中:
打印(行)

它什么也不返回

我怀疑一些空字符串可能会导致此问题,例如:
['2976','1','1','0','4','20160630','20170318','0','0','0','8','2','2125.364']
其中第四个元素为空


怎么办?

只需将自己的函数写入处理空字符串的
float

def myFloat(str):
    if str:
       return float(str)
    return <your_default_value> #e.g -1
您可以创建不带空字符串的新列表,然后对其进行迭代

更新:

仅当不是空字符串时才使用
float(x)
,如下所示:

lines = [[float(x) for x in line.strip().split(',') if x] for line in myfile.readlines()[1:3000]]

请注意末尾的
if x

只需将自己的函数写入处理空字符串的
float

def myFloat(str):
    if str:
       return float(str)
    return <your_default_value> #e.g -1
您可以创建不带空字符串的新列表,然后对其进行迭代

更新:

仅当不是空字符串时才使用
float(x)
,如下所示:

lines = [[float(x) for x in line.strip().split(',') if x] for line in myfile.readlines()[1:3000]]

请注意末尾的
如果x

您得到的错误是什么?如果字符串为空,您会得到什么结果?@ddor254文件“TESTSET.py”,第8行,in line=[[float(x)for x in line.strip().split(',')]for line in myfile.readlines()[1:3000]]文件“TESTSET.py”,第8行,in line=[[float(x)for x in line.strip()].split(“,”)]用于myfile.readlines()[1:3000]]文件“TESTSET.py”,第8行中的行=[[float(x)for x in line.strip().split(“,”)]用于myfile.readlines()[1:3000]]ValueError:无法将字符串转换为浮点:@BearBrown我只希望该行在包含字符串类型的元素时打印,但它不打印任何内容,这让我感到困惑。您得到的错误是什么?如果字符串为空,您会得到什么结果?@ddor254文件“TESTSET.py”,第8行,第=[[float(x)for x in line.strip().split(','))]对于myfile.readlines()[1:3000]]文件“TESTSET.py”中的行,第8行中的行=[[float(x)表示line.strip().split(',')]对于myfile.readlines()[1:3000]]文件“TESTSET.py”,第8行中的行=[[float(x)表示line.strip().split(',')]表示myfile.readlines()[1:3000]]ValueError:无法将字符串转换为float:@BearBrown我只想打印包含string类型元素的行,但它不打印任何内容,这让我感到困惑。问题是它首先在
行中被转换为float。问题是它首先在
行中被转换为float转换成浮点数