Apa cara terbaik untuk membagi string seperti "HELLO there HOW are YOU"
dengan kata-kata huruf besar (dengan Python)?
Jadi saya akan berakhir dengan array seperti ini: results = ['HELLO there', 'HOW are', 'YOU']
EDIT:
Saya telah mencoba:
p = re.compile("\b[A-Z]{2,}\b")
print p.split(page_text)
Tapi sepertinya tidak berhasil.
re.split()
?Jawaban:
saya menyarankan
Lihat demo ini .
sumber
re.split(re.split(pattern, string, maxsplit=0, flags=0))
seperti yang disebutkan dalam dokumen yang dikutip sebelumnya.Anda bisa menggunakan lookahead:
Ini akan terbagi di setiap spasi yang diikuti oleh serangkaian huruf besar yang diakhiri dengan batas kata.
Perhatikan bahwa tanda kurung siku hanya untuk keterbacaan dan juga bisa dihilangkan.
Jika cukup bahwa huruf pertama dari sebuah kata adalah huruf besar (jadi jika Anda ingin membagi di depannya
Hello
juga) akan lebih mudah:Sekarang ini terbagi di setiap ruang diikuti oleh huruf besar apa pun.
sumber
re.split(r'[ ](?=[A-Z]+\b)', input)
sehingga tidak menemukan huruf besar? Misalnya tidak cocok dengan "A"? Saya sudah mencobare.split(r'[ ](?=[A-Z]{2,}+\b)', input)
. Terima kasih!I
?re.split(r'[ ](?=[A-Z]{2,}\b)', input)
harus melakukannya.[ ]+
atau bahkan mungkin\W+
untuk menangkap lebih banyak kasus. Tetap saja, jawaban yang bagus.[ ]
tidak berhasil untuk saya. Sebagai gantinya, saya menggunakan\s
. Regexp lengkap yang berhasil untuk saya adalahre.split("\s(?=[A-Z]+\s)", string)
Pertanyaan Anda berisi string literal
"\b[A-Z]{2,}\b"
, tapi itu\b
berarti backspace, karena tidak ada r-modifier.Cobalah:
r"\b[A-Z]{2,}\b"
.sumber