Qual é a melhor maneira de dividir uma string "HELLO there HOW are YOU"
por palavras em maiúsculas (em Python)?
Então, eu acabaria com uma matriz como esta: results = ['HELLO there', 'HOW are', 'YOU']
EDITAR:
Eu tentei:
p = re.compile("\b[A-Z]{2,}\b")
print p.split(page_text)
Mas não parece funcionar.
re.split()
?Respostas:
Eu sugiro
Confira esta demonstração .
fonte
re.split(re.split(pattern, string, maxsplit=0, flags=0))
conforme mencionado nos documentos citados anteriormente.Você poderia usar um lookahead:
Isso se dividirá em cada espaço seguido por uma sequência de letras maiúsculas que terminam em um limite de palavra.
Observe que os colchetes são apenas para facilitar a leitura e também podem ser omitidos.
Se for suficiente que a primeira letra de uma palavra seja maiúscula (então se você quiser dividir na frente
Hello
também) fica ainda mais fácil:Agora, isso se divide em cada espaço seguido por qualquer letra maiúscula.
fonte
re.split(r'[ ](?=[A-Z]+\b)', input)
para não encontrar letras maiúsculas? Por exemplo, não corresponderia a "A"? Eu tenteire.split(r'[ ](?=[A-Z]{2,}+\b)', input)
. obrigado!I
?re.split(r'[ ](?=[A-Z]{2,}\b)', input)
deve fazer isso.[ ]+
ou talvez até\W+
pegar um pouco mais casos. Ainda assim, uma boa resposta.[ ]
não funcionou para mim. Em vez disso, eu usei\s
. A regexp completa que funcionou para mim foire.split("\s(?=[A-Z]+\s)", string)
Sua pergunta contém a string literal
"\b[A-Z]{2,}\b"
, mas isso\b
significará retrocesso, porque não há modificador r.Tente:
r"\b[A-Z]{2,}\b"
.fonte