Разделенная строка Python на основе регулярного выражения
каков наилучший способ разделить строку, например "HELLO there HOW are YOU"
по прописным словам (в Python)?
Так что я бы в конечном итоге с массивом вроде такого: results = ['HELLO there', 'HOW are', 'YOU']
EDIT:
Я пробовал:
p = re.compile("b[A-Z]{2,}b")
print p.split(page_text)
это, кажется, не работает, хотя.
3 ответа:
предлагаю
l = re.compile("(?<!^)\s+(?=[A-Z])(?!.\s)").split(s)
Регистрация демо.
вы могли бы использовать lookahead:
re.split(r'[ ](?=[A-Z]+\b)', input)
это будет разделено на каждом пространстве, за которым следует строка прописных букв, которые заканчиваются в слове-границе.
обратите внимание, что квадратные скобки предназначены только для удобства чтения и могут быть опущены.
если достаточно, чтобы первая буква слова была прописной (так что если вы хотите разделить перед
Hello
а также) становится еще проще:re.split(r'[ ](?=[A-Z])', input)
Теперь это разбивается на каждом пространстве за ним следует любая заглавная буква.