Токенизация слов с использованием регулярных выражений Python

Я пытаюсь разбить строки на списки «тегов» в python. При разделении следует обрабатывать такие строки, как «HappyBirthday», и удалять большую часть знаков препинания, но сохранять дефисы и апострофы. Моя отправная точка:

tags = re.findall("([A-Z]{2,}(?=[A-Z]|$)|[A-Z][a-z]*)|\w+-\w+|[\w']+"

Я бы хотел превратить эти образцы данных:

Jeff's dog is un-American SomeTimes! BUT NOTAlways

в:

['Jeff's', 'dog', 'is', 'un-American', 'Some', 'Times', 'BUT', 'NOT', 'Always']

P.S. Мне очень жаль, что мое описание не очень хорошее. Я не уверен, как это объяснить, и в основном безуспешно работал с Google. Я надеюсь, что пример это правильно иллюстрирует.

Изменить: я думаю, что мне нужно было уточнить, поэтому также,

  1. , если слово написано с большой буквы и заглавными буквами, например «UN-American», оно будет сохранено как одно слово вывод будет 'UN-American'
  2. , если дефис имеет пробел с одной или обеих сторон, а ля 'THIS- is' или 'This-is', он должен игнорировать дефис и выдавать ["THIS","is"] и ["This", "is"] уважительно,
  3. и аналогично для апострофа, если он находится в середине слова типа "What'sItCalled", он должен производить ["What", "It", "Called"]
15
задан user779420 2 June 2011 в 12:05
поделиться