计数没有。行中的定界符,同时忽略作为数据值一部分的定界符

Count no. of delimiters in line while ignoring the delimiter which is part of data value

我正在逐行读取一个大的 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 个

但下面的代码片段输出

代码段:

file1 = open('file_name.csv', 'r') 

while True: 

    line = file1.readline() 
  
    if not line: 
        break
    
    print(line.count(','))

您可以使用 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))

一种简单的方法是使用正则表达式并删除两个 " 之间的所有内容,这样就不会计算里面的逗号。

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