我正在尝试计算文本文件中条目之间的逗号,以便我可以使用逗号数来查找平均值的条目数。不幸的是,它出现了零的commacount。
let rx = "\\.[0-9]+\\."
答案 0 :(得分:3)
您已经使用line = file.read()
使用了文件迭代器,因此您不会迭代任何内容。你应该忘记read
并迭代文件对象本身:
with open("inputs.txt", "r") as f:
count = sum(line.count(",") for line in f)
# f.seek(0)
# use the lines again
如果你想让指针回到开头再次迭代,你可以f.seek(0)
,但我不确定total = sum(int(num) for num in line.strip(',').split(','))
正在做什么。
一旦你调用.read或.readlines,你就已经将指针移动到文件的末尾,所以除非f.seek(0)
你不能再遍历所有行,否则你基本上就是这样做了:
In [8]: iterator = iter((1,2,3))
In [9]: list(iterator) # consume
Out[9]: [1, 2, 3]
In [10]: list(iterator) # empty
Out[10]: []
In [11]: list(iterator).count(1)
Out[11]: 0
如果你有一个带整数的逗号分隔文件你可以使用csv模块,行的长度将给你如何元素的数量,并将字符串映射到整数并总和所有行值:
import csv
with open("inputs.txt") as f:
r = csv.reader(f) # create rows split on commas
sm = 0
com_count = 0
for row in r:
com_count += len(row) # "1,2,3"
sm += sum(map(int,row))
实际上sm += sum(map(int,row)) -1
匹配逗号计数但是如果你想要元素的数量,那么计算逗号不是正确的方法"1,2,3".count(",") == 2
,但有三个元素。
答案 1 :(得分:1)
这应该可以帮助你开始,它应该给你一个文本文件中的逗号数量,如果你使用循环,你可以将它用于你拥有的所有文件。
with open('inputs.txt', 'r') as f:
numCommas = f.read().count(',')
print numCommas