6

次の形式のテキストドキュメントがあります。

-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が返され、理由がわかりません。

4

3 に答える 3

19

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

何よりも、行を数えるときに空白(特に改行ですが、他のスペースやタブも干渉する可能性があります)を削除します。

于 2013-01-10T14:42:50.827 に答える
8

.readlines()葉は線\nに並んでいるので、一致しません。

于 2013-01-10T14:43:07.513 に答える
0

モジュールをインポートしたくない場合は、短いコードを楽しんで、「リスト」内包表記を少し気に入ってください。

with open('results.txt') as infile:
    counts = { key: infile.count(key) for key in ['-1+1', '+1-1'] }

そしてもちろんcounts、口述としてのアクセス

于 2013-01-10T16:36:35.653 に答える