我正在尝试使用大写字母作为分隔符号来标记许多字符串。我已经登陆了以下代码:
token = ([a for a in re.split(r'([A-Z][a-z]*)', "ABCowDog") if a])
print token
我按照预期得到了这个,作为回报:
['A','B','牛','狗']
现在,这只是一个让生活更轻松的示例字符串,但在我的情况下,我想通过这个列表找到单个字符(检查len()很简单)并将各个字母放在一起,只要它们相遇先前的定义。在上面的例子中,字符串'AB','Cow'和'Dog'是我实际想要形成的字符串(连续大写是首字母缩略词的一部分)。无论出于何种原因,一旦我获得了令牌,我就无法弄清楚如何走到列表中。很抱歉,如果这是一个简单的答案,但我对python很新,并且厌倦了撞到墙上。
答案 0 :(得分:3)
re.split
并不总是易于使用,在许多情况下似乎有时会受到限制。您可以使用re.findall
尝试不同的方法:
>>> s = 'ABCowDog'
>>> re.findall(r'[A-Z](?:[A-Z]*(?![a-z])|[a-z]*)', s)
['AB', 'Cow', 'Dog']
答案 1 :(得分:1)
答案 2 :(得分:0)
([A-Z][a-z]+)
你应该这样分开。