Как лучше всего разбить строку, например "HELLO there HOW are YOU"
, прописными словами (в Python)?
Итак, я бы получил такой массив: results = ['HELLO there', 'HOW are', 'YOU']
РЕДАКТИРОВАТЬ:
Я пытался:
p = re.compile("\b[A-Z]{2,}\b")
print p.split(page_text)
Хотя, похоже, это не работает.
re.split()
?Ответы:
Я предлагаю
Посмотрите эту демонстрацию .
источник
re.split(re.split(pattern, string, maxsplit=0, flags=0))
как упоминалось в ранее цитированных документах.Вы можете использовать просмотр вперед:
Это разделится на каждый пробел, за которым следует строка заглавных букв, заканчивающаяся границей слова.
Обратите внимание, что квадратные скобки предназначены только для удобства чтения и могут быть опущены.
Если достаточно, чтобы первая буква слова была в верхнем регистре (так что если вы также захотите разделить перед
Hello
ней), это станет еще проще:Теперь это разбивается на каждый пробел, за которым следует любая заглавная буква.
источник
re.split(r'[ ](?=[A-Z]+\b)', input)
чтобы он не находил заглавные буквы? Например, это не соответствует «А»? Я пробовалre.split(r'[ ](?=[A-Z]{2,}+\b)', input)
. Спасибо!I
?re.split(r'[ ](?=[A-Z]{2,}\b)', input)
должен это сделать.[ ]+
а может быть, даже\W+
поймать чуть больше дел. Тем не менее, хороший ответ.[ ]
у меня не получилось. Вместо этого я использовал\s
. Полное регулярное выражение, которое сработало для меня, былоre.split("\s(?=[A-Z]+\s)", string)
Ваш вопрос содержит строковый литерал
"\b[A-Z]{2,}\b"
, но это\b
будет означать возврат, потому что нет r-модификатора.Попробуйте:
r"\b[A-Z]{2,}\b"
.источник