ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Есть много регулярных выражений электронной почты. Я не пытаюсь сопоставить все форматы электронной почты в этом вопросе, просто показывая пример.
Регулярное выражение подход с RegexpTokenizer
(mentioned above по lenz) могут работать:
from nltk.tokenize.regexp import RegexpTokenizer
line="My email: [email protected] is not accessible."
pattern = r'\[email protected][^\s.]+\.[a-zA-Z]+|\w+|[^\w\s]'
tokeniser=RegexpTokenizer(pattern)
tokeniser.tokenize(line)
# => ['My', 'email', ':', '[email protected]', 'is', 'not', 'accessible', '.']
регулярное выражение матча:
\[email protected][^\s.]+\.[a-zA-Z]+
- текст, глядя, как электронная почта:
\S+
- 1 или более не-пробельные символы
@
- это @
символ
[^\s.]+
- 1 или более символов, кроме пробельных символов и .
\.
- буквальная точка
[a-zA-Z]+
- 1 или более ASCII буквы
|
- или
\w+
- 1 или более символов слова (буквы, цифры или символы подчеркивания)
|
- или
[^\w\s]
- одиночный (добавить +
после него, чтобы он соответствовал последовательности из 1 или более) появления символа, отличного от слова и символа пробела.
См. online regex demo.
Как показывает ваш собственный выбор тегов, возможным решением является использование 'RegexpTokenizer', определяющее, что следует считать токеном. Это не имеет никакого отношения к обновлению пакета. – lenz