146

"HELLO there HOW are YOU"用大写单词(在 Python 中)分割字符串的最佳方法是什么?

所以我最终会得到一个像这样的数组:results = ['HELLO there', 'HOW are', 'YOU']


编辑:

我试过了:

p = re.compile("\b[A-Z]{2,}\b")
print p.split(page_text)

不过,它似乎不起作用。

4

3 回答 3

165

我建议

l = re.compile("(?<!^)\s+(?=[A-Z])(?!.\s)").split(s)

检查这个演示

于 2012-11-03T13:02:14.190 回答
68

您可以使用前瞻:

re.split(r'[ ](?=[A-Z]+\b)', input)

这将在每个空格处拆分,后跟一串以单词边界结尾的大写字母。

请注意,方括号只是为了便于阅读,也可以省略。

如果一个单词的第一个字母是大写就足够了(所以如果你也想在前面拆分Hello)它会变得更容易:

re.split(r'[ ](?=[A-Z])', input)

现在,它在每个空格处拆分,后跟任何大写字母。

于 2012-11-03T12:45:44.260 回答
1

您的问题包含字符串 literal "\b[A-Z]{2,}\b",但这\b意味着退格,因为没有 r-修饰符。

试试:r"\b[A-Z]{2,}\b"

于 2019-06-04T18:29:48.347 回答