用大写单词(在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)
但它似乎不起作用。
答案 0 :(得分:92)
答案 1 :(得分:39)
你可以使用前瞻:
re.split(r'[ ](?=[A-Z]+\b)', input)
这将在每个空格处分开,后面跟着一串以字边界结尾的大写字母。
请注意,方括号仅用于提高可读性,也可以省略。
如果一个单词的第一个字母是大写的话就足够了(所以如果你想在Hello
前面分开),那就更容易了:
re.split(r'[ ](?=[A-Z])', input)
现在,这会在每个空格处分开,后跟任何大写字母。
答案 2 :(得分:11)
您不需要拆分,而是查找:
re.findall(r'[A-Z]+[^A-Z]*', str)
答案 3 :(得分:0)
您的问题包含字符串文字"\b[A-Z]{2,}\b"
,
但是\b
表示退格,因为没有r-修饰符。
尝试:r"\b[A-Z]{2,}\b"
。