我有10个使用python创建的CSV文件。每个CSV文件大约有330K行(行),每行看起来像:
0.334,0.0232,0.00086,1.642e-05
[空行]
0.334,0.0232,0.00086,1.742e-05
[空行]
...
(我不确定为什么python在每行之后写入一个空行)。
我正在尝试合并名为Parameters1,Parameters2的10个文件....参数10,排除空行,仅当第二列包含大于0.1的值时才写入。
fout = open("C:\Anaconda3\Sr90NHPModelParameters\Parameters100.csv","a")
for num in range(1,11):
for line in open("C:\Anaconda3\Sr90NHPModelParameters\Parameters"+str(num)+".csv"):
if line[0]!="":
if line[1]>0.1:
fout.write(line)
else:
pass
else:
pass
fout.close()
如果我运行上面的代码,我会得到无法解决的类型:str()>浮动()。
如果我改为运行相同的代码
if(line[1])>0.1
到
if float(line[1])>0.1:
我得到ValueError:无法将字符串转换为float:'。'
我不确定为什么会这样。我确实有'。' ,但它是数字的一部分,例如0.334或1.642e-05。
非常感谢你的帮助!
答案 0 :(得分:0)
在您能够使用csv
模块重构代码之前,您可以尝试在条件之前将line = line.strip().split(",")
添加到脚本中,以确保您实际使用list
}。以下内容应该是一个不错的例子:
with open("C:\Anaconda3\Sr90NHPModelParameters\Parameters100.csv","a") as fout:
for num in range(1,11):
for line in open("C:\Anaconda3\Sr90NHPModelParameters\Parameters"+str(num)+".csv"):
line = line.strip().split(",")
if line[0] == '' or float(line[1]) < 0.1:
continue
else:
fout.write(",".join(line)+"\n")
我希望现在有所帮助。