我在任何地方都找不到这个问题,我有点惊讶。我正在尝试使用此命令逐行读取一个巨大的文件:
with open("file.csv") as f:
for line in f:
splitline = line.split()
如果我print(splitline)
,我得到很多行,只是逗号,我不想:
[',,,,,,,']
我想要的线条如下:
['XZ02345,AAA,BBB,1.0,11.0,15.0,1.0,1.0']
我已经尝试过各种if 'XZ' in splitline: print(splitline)
和if splitline[0] == "": continue
类型的解决方案,但是我尝试执行的所有操作要么不打印所有行,要么不打印任何行。
所需的输出中没有一行只是逗号[',,,,,,,']
答案 0 :(得分:1)
您可以使用regex
import re
with open("file.csv") as f:
for line in f:
if re.match(r'^\,*$', line) is None:
splitline = line.split()
print(splitline)
这会尝试仅使用,
查找字符串,如果字符串还有其他内容,它将处理该字符串
答案 1 :(得分:0)
尝试一下:
with open("file.csv") as f:
for line in f:
if(re.sub('[^0-9a-zA-Z]+', '', str(line))):
splitline = line.split()
答案 2 :(得分:0)
您之所以得到[',,,,,,'],是因为您没有在csv行中填充数据
如果有实际数据,您可以打印:
delimiter = ','
if splitline.replace(delimiter, '').strip():
print(splitline.split())
答案 3 :(得分:0)
如果您只对逗号(与问题标题不同)感兴趣,可以使用以下内容:
empty = True
for char in splitline[0]:
if char != ',':
empty = False
break
if empty:
continue
冗长
if not any([char != ',' for char in splitline[0]]):
continue
如果真的只是确切的模式,您应该可以使用Aran-Fey的注释:
if splitline == [',,,,,,,']:
continue
答案 4 :(得分:0)
在split()函数下面添加条件,如果splitline.replace(',','')!='':控制打印不打印行,行,行,行。