使用python

时间:2018-08-23 06:14:34

标签: python python-3.x python-2.7

我试图在.csv文件中逐行计算逗号。不幸的是,它总是归零。

    import csv 

    with open('Test.csv') as csv_file:
       csv_reader = csv.reader(csv_file, delimiter=',')
       for row in csv_reader:
           numCommas = row.read().count(',')
           print numCommas

但是我总是得到0。

7 个答案:

答案 0 :(得分:3)

如果您只想计算逗号而不需要数据,则不需要csv模块:

with open('Test.csv', 'r') as csv_file:
    for line in csv_file:
        print(line.count(','))

答案 1 :(得分:2)

在python2上,您可以通过这种方式尝试,但是您必须更改定界符:

csv_reader = csv.reader(csv_file, delimiter='\t')

numCommas = row[0].count(',')

如果分隔符为,,则row的样子如下:

['a', 'd', 'f', 'g', 'h']

使用\t作为分隔符,该行是这样的:

['a,d,f,g,h']

因此,您可以使用每行的逗号数而不是总计数

答案 2 :(得分:2)

只需读取文件并计数','

with open('Test.csv') as csv_file:
    count = csv_file.read().count(',')

答案 3 :(得分:1)

在您的示例中,rowcsv_reader的上方是一个列表。不是用逗号分隔的字符串。当您通过csv.reader()读取文件时,会将行分解为每一列并将其存储到列表中,然后将其放入csv阅读器对象中。

出于您的目的,如果您希望对行中的列或项目进行计数,可以简单地使用len(row)

答案 4 :(得分:1)

您共享的代码将出错,因为在您的for循环中,将被列出。并且列表对象没有属性“ read”。

您已经使用了 csv.reader ,因此它将以列表的形式为您提供每一行。因此,当您在for循环中迭代csv_reader对象时,行变量的类型将为list。

如果要计算每行中的列数,您只需在for循环内打印len(row)。

print len(row)

但是,如果您只想计算逗号数,则无需使用csv.reader即可读取文件。

答案 5 :(得分:0)

它用零表示,因为csv文件用定界符分隔并且“ row”变量是一个列表对象。

您可以像这样获取str对象中的逗号数:

a = "a,b,b,"
print(a.count(","))

这不适用于列表,因此您需要对“行”变量中的单个条目应用计数以获得逗号计数(如果您需要对行中的每个条目进行计数),或者可以将文件读取为文本文件。并通过readlines方法获取逗号。

答案 6 :(得分:0)

csv_reader = csv.reader(csv_file, delimiter=',')

此行用“,”分隔元素,并返回一个列表。例如,一个csv行可能是

100, 200, 300, 400

返回的列表为[100, 200, 300, 400]

要计算逗号,请从元素数中减去1。 i.e. 4个元素= 3个逗号

固定版本:

with open('Test.csv') as csv_file:
   csv_reader = csv.reader(csv_file, delimiter=',')
   for row in csv_reader:
       print (len(row)-1)