Input= fi.read()
メモリにファイル全体を読み込みます。そのため、大きなファイルがあなたを引きつけています。解決策は、行ごとに読み取ることです。
大きなファイルは、Counter
オブジェクトに単語を保存しているため、引き続きトリップすることがあります。重複が少ない場合、そのオブジェクトは非常に大きくなります。重複が共通の場合はメモリに問題はありません。
電話番号list(someCounter.elements())
someCounter
に多数の電話番号がある場合は、電話をかけないでください。それは非常に大きなリストを返します。 (someCounter = Counter({'redrum': 100000})
場合、list(someCounter.elements())
はあなたの100000個の要素を持つリストを与えるだろう!)
char_count = 0
word_counter = Counter()
with codecs.open('G:\python-proj/text.txt' , 'r',encoding='utf-8') as f:
for line in f:
char_count += len(line)
word_counter.update(line.split())
unique_word_count = len(word_counter)
total_word_count = sum(word_counter.itervalues())
は
line.split()
を使用して、いくつかの単語をもたらすことができるあなたがユニークであることを考えていないというユニークとしてカウントされていることに注意してください。考えてみましょう:
>>> line = 'Red cars raced red cars.\n'
>>> Counter(line.split())
Counter({'cars': 1, 'cars.': 1, 'raced': 1, 'red': 1, 'Red': 1})
我々は'red'
と'Red'
は総額にかかわらず、一緒にカウントされるようにしたい場合は、我々はこれを行うことができます:
>>> line = 'Red cars raced red cars.\n'
>>> Counter(s.lower().split()) # everything is made lowercase before counting
Counter({'red': 2, 'cars': 1, 'cars.': 1, 'raced': 1})
我々は'cars'
と'cars.'
は関係なく、句読点の一緒にカウントされるようにしたい場合は、我々はストリップ句読点は次のようになります。
>>> import string
>>> punct = string.punctuation
>>> line = 'Red cars raced red cars.\n'
>>> Counter(word.strip(punct) for word in line.lower().split())
Counter({'cars': 2, 'red': 2, 'raced': 1})
Excelファイルの読み取りについては、 nをよりターゲットとする必要があります。 python-excel.orgから始まり、最も適切と思われるライブラリを選んで、コードを書いてStackOverflowで回答を探してから、あなたが試みたことを示すコードとともに質問として遭遇する問題を投稿してください。
Excelファイルを読むことに関して、あなたの質問はよりターゲットを絞り込む必要があります。 Python-excel.orgで始まり、最も適切と思われるライブラリを選んで、コードを書いてStackOverflowで答えを探して、あなたが試みたことを示すコードとともに質問として出てくる問題を投稿してください。ヘルプセンターの[良い質問をどうやって行うか](http://stackoverflow.com/help/how-to-ask)を参照してください。私は以下のあなたの質問の他の部分に答えました。 –