Прочитайте слова из .txt и посчитайте за каждое слово - PullRequest
1 голос
/ 28 марта 2011

Интересно, как читать символьную строку вроде fscanf.Мне нужно прочитать слово, во всех .txt. Мне нужен счет для каждого слова.

collectwords = collections.defaultdict(int)

with open('DatoSO.txt', 'r') as filetxt:

for line in filetxt:
    v=""
    for char in line:
        if str(char) != " ":
          v=v+str(char)

        elif str(char) == " ":
          collectwords[v] += 1
          v=""

Таким образом, я не могу прочитать последнее слово.

Ответы [ 3 ]

3 голосов
/ 28 марта 2011

Хм, как это?

with open('DatoSO.txt', 'r') as filetxt:
    for line in filetxt:
        for word in line.split():
            collectwords[word] += 1
3 голосов
/ 28 марта 2011

Вы также можете рассмотреть возможность использования collections.counter, если вы используете Python> = 2.7

http://docs.python.org/library/collections.html#collections.Counter

Он добавляет ряд методов, таких как «most_common», которые могут быть полезны вэтот тип приложения.

Из PyMOTW Дуга Хеллмана:

import collections

c = collections.Counter()
with open('/usr/share/dict/words', 'rt') as f:
    for line in f:
        c.update(line.rstrip().lower())

print 'Most common:'
for letter, count in c.most_common(3):
    print '%s: %7d' % (letter, count)

http://www.doughellmann.com/PyMOTW/collections/counter.html - хотя это количество букв вместо количества слов.В строке c.update вы хотели бы заменить line.rstrip().lower на line.split() и, возможно, некоторый код, чтобы избавиться от пунктуации.

Редактировать: Удаление пунктуации здесь, вероятно,самое быстрое решение:

import collections
import string

c = collections.Counter()
with open('DataSO.txt', 'rt') as f:
    for line in f:
        c.update(line.translate(string.maketrans("",""), string.punctuation).split())

(заимствовано из следующего вопроса Лучший способ убрать пунктуацию из строки в Python )

1 голос
/ 28 марта 2011

Python делает это легко:

collectwords = []
filetxt = open('DatoSO.txt', 'r')

for line in filetxt:
  collectwords.extend(line.split())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...