Python:跳过所有不带字母/数字的行

时间:2019-02-14 08:25:54

标签: python

我在任何地方都找不到这个问题,我有点惊讶。我正在尝试使用此命令逐行读取一个巨大的文件:

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类型的解决方案,但是我尝试执行的所有操作要么不打印所有行,要么不打印任何行。

所需的输出中没有一行只是逗号[',,,,,,,']

5 个答案:

答案 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(',','')!='':控制打印不打印行,行,行,行。