Я пытаюсь разделить строки на списки "тегов" в python. Разделение должно обрабатывать строки, такие как "HappyBirthday", и удалять большую пунктуацию, но сохранять дефисы и апострофы. Моя начальная точка:
tags = re.findall("([A-Z]{2,}(?=[A-Z]|$)|[A-Z][a-z]*)|\w+-\w+|[\w']+"
Я хотел бы повернуть эти образцы данных:
Jeff dog is un-American SomeTimes! BUT NOTAlways
В:
['Jeff's', 'dog', 'is', 'un-American', 'Some', 'Times', 'BUT', 'NOT', 'Always']
P.S. Мне жаль, что мое описание не очень хорошее. Я не уверен, как это объяснить, и в большинстве случаев у вас не получается с Google. Я надеюсь, что пример иллюстрирует это правильно.
Изменить: я думаю, мне нужно быть более точным, так что,
- Если слово загипнотизировано и капитал, например, "ООН-Американец", он сохранит его как одно слово, поэтому выход будет "UN-American"
- Если дефис имеет пространство на одной или обеих сторонах, a la 'THIS- is' или 'This - is', он должен игнорировать hypen и производить [ "THIS", "is" ] и ["THIS", "есть" ] уважительно,
- и просто для апострофа, если его в середине слова, такого как "What's IsTalled", он должен произвести [ "Что есть", "Это", "Вызывается" ]