2

大きなテキスト ファイルがあり、以下を実装するための最良の方法を探しています。

  • 各文字列が「x y」のように見える一連の文字列を定義します。x、y のそれぞれは、多数の値を取ることができる整数です。

  • ファイルを調べて、「x y」の各インスタンスを見つけて数えます。結果を ("x y": count) のようなリストとして返します。

私はプログラミングと Python の初心者ですが、思いつくのは次のようなものだけです。

f = open('file', 'r')
for x in xrange:
    for y in yrange:
        xystring = str("%i %i") %(x,y)
        count = 0
        for line in f:
            count += line.count(xystring)
        print xystring, count

今、私の明らかな問題は、これが私にはエレガントに見えず、スケールが悪いことです-最終的には、7 ^ 7 の異なる文字列のすべてのインスタンスをカウントするためにこのメソッドが必要になります。また、各文字列のカウントを追跡しながら、複数のファイルにわたってこれをスキャンする必要があります。これを行うための最も効率的でPython風の方法を探しています。

ありがとう!

4

1 に答える 1

3

(未テスト) のようなもの:

from collections import Counter

pairs = Counter()

with open(...) as fp:
   for line in fp:
      pairs.update(re.findall(r'\d+\s+\d+', line))
于 2013-10-10T13:07:33.180 に答える