问题描述
我正在逐行读取一个大的 csv 文件,我想计算编号。每行中的分隔符。
但如果分隔符是数据值的一部分,则不应计算在内。
数据集的几条记录:
com.abc.xyz,ple Sara,"DIT,Government of Maharashtra,India"
com.mtt.rder,News Maharashtra,Time Internet Limited"
com.grner.mahya,Mh Swth,"Public Health Department,Maharashtra"
在所有 3 行中,实际逗号(将数据分成多列)的数量只有 2 个
- 第 1 行 4 个逗号
- 2 表示第 2 行
- 3 表示第 3 行
代码片段:
file1 = open('file_name.csv','r')
while True:
line = file1.readline()
if not line:
break
print(line.count(','))
解决方法
一种简单的方法是使用正则表达式并删除两个 "
之间的所有内容,以便不计算其中的逗号。
import re
file1 = open('input.csv','r')
while True:
line = file1.readline()
if not line:
break
line = re.sub('".*?"','',line)
print(line.count(','))
输出:
2
2
2
,
您可以使用 python 中的 csv 包来计算列数:
import csv
with open('file_name.csv','rt') as f:
csv_reader = csv.reader(f,skipinitialspace=True)
for line in csv_reader:
print(len(line))