(Pythonで)"HELLO there HOW are YOU"
などの文字列を大文字で分割する最良の方法は何ですか?
したがって、次のような配列になります:results = ['HELLO there', 'HOW are', 'YOU']
編集:
私が試してみました:
p = re.compile("\b[A-Z]{2,}\b")
print p.split(page_text)
ただし、機能していないようです。
先読みを使用できます。
re.split(r'[ ](?=[A-Z]+\b)', input)
これは、単語境界で終わる大文字の文字列が後に続くすべてのスペースで分割されます。
角括弧は読みやすくするためのものであり、省略することもできます。
Wordの最初の文字が大文字で十分な場合(したがって、Hello
の前でも分割したい場合)、さらに簡単になります。
re.split(r'[ ](?=[A-Z])', input)
現在、これはすべてのスペースで分割され、その後に大文字が続きます。
分割する必要はありませんが、むしろfindall:
re.findall(r'[A-Z]+[^A-Z]*', str)
質問には文字列リテラル"\b[A-Z]{2,}\b"
が含まれていますが、r修飾子がないため、その\b
はバックスペースを意味します。
試してください:r"\b[A-Z]{2,}\b"
。