¿Cuál es la mejor manera de dividir una cadena "HELLO there HOW are YOU"
con palabras en mayúsculas (en Python)?
Entonces terminaría con una matriz como tal: results = ['HELLO there', 'HOW are', 'YOU']
EDITAR:
Yo he tratado:
p = re.compile("\b[A-Z]{2,}\b")
print p.split(page_text)
Sin embargo, no parece funcionar.
re.split()
?Respuestas:
yo sugiero
Mira esta demostración .
fuente
re.split(re.split(pattern, string, maxsplit=0, flags=0))
como se menciona en los documentos citados anteriormente.Podrías usar una mirada anticipada:
Esto se dividirá en cada espacio seguido por una cadena de letras mayúsculas que terminan en un límite de palabra.
Tenga en cuenta que los corchetes son solo para facilitar la lectura y también podrían omitirse.
Si es suficiente que la primera letra de una palabra esté en mayúsculas (por lo tanto, si también desea dividir en frente de
Hello
), se vuelve aún más fácil:Ahora, esto se divide en cada espacio seguido de cualquier letra mayúscula.
fuente
re.split(r'[ ](?=[A-Z]+\b)', input)
para que no encontrara letras mayúsculas? Por ejemplo, ¿no coincidiría con "A"? Lo intentére.split(r'[ ](?=[A-Z]{2,}+\b)', input)
. ¡Gracias!I
?re.split(r'[ ](?=[A-Z]{2,}\b)', input)
Deberías hacerlo.[ ]+
o tal vez incluso\W+
detectar un poco más de casos. Aún así, una buena respuesta.[ ]
no funcionó para mí. En cambio, usé\s
. Lare.split("\s(?=[A-Z]+\s)", string)
Su pregunta contiene el literal de cadena
"\b[A-Z]{2,}\b"
, pero eso\b
significará retroceso, porque no hay un modificador r.Proveedores:
r"\b[A-Z]{2,}\b"
.fuente