我在一个目录中有多个csv文件。我打开每个csvfile并使用正则表达式模式搜索匹配项,然后最终必须获得每个文件的所有匹配项的计数。
data_pattern = "^(?!b(d)1+b)(?!123456789|219099999|078051120)(?!666|000|9d{2})\d{3}(?!00)\d{2}(?!0{4})\d{4}$"
p = re.compile(ssn_data_pattern)
ALL_CSVFILES = glob.glob('/data/csvdata/*.csv')
for csvfile in ALL_CSVFILES:
lines = [line.strip() for line in open(csvfile)]
for line in lines:
match=re.findall(ssn_data_pattern,line)
head,tail=os.path.split(csvfile)
tailstring=tail
filename=tailstring.replace(".csv", "")
print(filename,len(match))
输出在这里
第一行是字段名称,它表示0,其余所有匹配项都计为1。 相反,我需要一次为所有行计数。
/data/csvdata/STG_201__DATA.csv
STG_201__DATA 0
STG_201__DATA 1
STG_201__DATA 1
STG_201__DATA 1
STG_201__DATA 1
/data/csvdata/CISADM2_BT7_DATA.csv
CISADM2_BT7_DATA 0
CISADM2_BT7_DATA 1
CISADM2_BT7_DATA 1
CISADM2_BT7_DATA 1
CISADM2_BT7_DATA 1
CISADM2_BT7_DATA 1
/data/csvdata/CISADM_DXP_ENRO_DATA.csv
CISADM_DXP_ENRO_DATA 0
CISADM_DXP_ENRO_DATA 1
CISADM_DXP_ENRO_DATA 1
CISADM_DXP_ENRO_DATA 1
CISADM_DXP_ENRO_DATA 1
CISADM_DXP_ENRO_DATA 1