Количество слов в Python с использованием регулярного выражения - PullRequest
3 голосов
/ 16 мая 2011

Как правильно считать английские слова в документе с помощью регулярного выражения?

Я пробовал с:

words=re.findall('\w+', open('text.txt').read().lower())
len(words)

но, похоже, мне не хватает нескольких слов (по сравнению с количеством слов в gedit). Я правильно делаю?

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 17 мая 2011

Использование \ w + не будет правильно считать слова, содержащие апострофы или дефисы, например, «не может» будет считаться как 2 слова. Он также будет считать числа (строки цифр); «12 345» и «6,7» будут считаться как 2 слова («12» и «345», «6» и «7»).

1 голос
/ 16 мая 2011

Кажется, что это работает, как ожидалось.

>>> import re
>>> words=re.findall('\w+', open('/usr/share/dict/words').read().lower())
>>> len(words)
234936
>>> 
bash-3.2$ wc /usr/share/dict/words
  234936  234936 2486813 /usr/share/dict/words

Почему вы преуменьшаете свои слова?Какое это имеет отношение к счету?

Я бы сказал, что было бы эффективнее следующее:

words=re.findall(r'\w+', open('/usr/share/dict/words').read())
...