Разделить слова в бегущем тексте с помощью Python? - PullRequest
1 голос
/ 03 июля 2010

Я пишу кусок кода, который будет извлекать слова из бегущего текста. Этот текст может содержать разделители, такие как \ r, \ n и т. Д., Которые могут быть в тексте.

Я хочу отбросить все эти разделители и извлечь только полные слова. Как я могу сделать это с Python? какая библиотека доступна для сжатия текста в python?

Ответы [ 2 ]

5 голосов
/ 03 июля 2010

Если ваше определение слова совпадает с определением модуля регулярных выражений (re), то есть букв, цифр и подчеркиваний, это просто:

import re
fullwords = re.findall(r'\w+', thetext)

, где thetext - рассматриваемая строка (например, полученная из f.read() файлового объекта f, открытого для чтения, если вы получили текст).

Если вы определяете слова по-разному (например, вы хотите включить апострофы, например «это» будет считаться «одним словом»), это не намного сложнее - просто используйте в качестве первого аргумента findall соответствующий образец, например r"[\w']+" для случая апострофа.

Если вам нужно быть очень, очень искушенным (например, иметь дело с языками, в которых нет разрывов между словами), то проблема внезапно становится намного сложнее, и вам понадобится какой-нибудь сторонний пакет, такой как NLTK .

1 голос
/ 03 июля 2010

Предполагая, что ваши разделители - это пробельные символы (например, пробел, \r и \n), тогда базовый str.split() делает то, что вы хотите:

>>> "asdf\nfoo\r\nbar too\tbaz".split()
['asdf', 'foo', 'bar', 'too', 'baz']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...