我试图在.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。
答案 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)
在您的示例中,row
中csv_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)