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) в Справочном центре. Я ответил на другую часть вашего вопроса ниже. –