我有一份格式为的文本文件:
-1+1
-1-1
+1+1
-1-1
+1-1
...
我想要一个程序来计算有多少行有-1 + 1行和+ 1-1行。然后程序只需要返回多少行的值。 我写了代码:
f1 = open("results.txt", "r")
fileOne = f1.readlines()
f1.close()
x = 0
for i in fileOne:
if i == '-1+1':
x += 1
elif i == '+1-1':
x += 1
else:
continue
print x
但由于某种原因,它总是返回0,我不知道为什么。
任何帮助都会让我非常感激,因为我已经看了好几个小时!!
答案 0 :(得分:15)
改为使用collections.Counter
:
import collections
with open('results.txt') as infile:
counts = collections.Counter(l.strip() for l in infile)
for line, count in counts.most_common():
print line, count
最重要的是,在计算线条时,删除空格(特别是换行符,但任何其他空格或制表符也可能会干扰)。
答案 1 :(得分:8)
.readlines()
将\n
留在行中,这就是它们不匹配的原因。
答案 2 :(得分:0)
如果您不想导入模块,请享受短代码,并且喜欢一点'list'理解:
with open('results.txt') as infile:
counts = { key: infile.count(key) for key in ['-1+1', '+1-1'] }
然后当然可以访问counts
作为词典