Python拆分不是预期的结果

Python拆分不是预期的结果,python,regex,Python,Regex,我试图用以下代码在Python中将字符串切分为几部分: re.split(“[A-Z][A-Z]?[0-9]*”,“CO2”) 我预期会有这样的结果: ["C","O2"] (?<=[A-Z\d])(?=[A-Z]) 然而,我得到: ['','',''] 由于re中没有捕获组,因此分割的内容不属于结果的一部分。您得到的是“C”之前的空字符串、“C”和“O2”之间的空字符串以及“O2”之后的空字符串 如果你使用 re.split("([A-Z][a-z]?[0-9]*)","CO2")

我试图用以下代码在Python中将字符串切分为几部分:

re.split(“[A-Z][A-Z]?[0-9]*”,“CO2”)

我预期会有这样的结果:

["C","O2"]
(?<=[A-Z\d])(?=[A-Z])
然而,我得到:

['','','']

由于re中没有捕获组,因此分割的内容不属于结果的一部分。您得到的是“C”之前的空字符串、“C”和“O2”之间的空字符串以及“O2”之后的空字符串

如果你使用

re.split("([A-Z][a-z]?[0-9]*)","CO2")
你会得到

['', 'C', '', 'O2', '']
一个肮脏的方法是使用

filter(None, re.split("([A-Z][a-z]?[0-9]*)","CO2"))

删除不真实的元素(在本例中为空字符串)。

如果要拆分

使用如下环视:

["C","O2"]
(?<=[A-Z\d])(?=[A-Z])



希望有帮助。

您也可以使用这个:

>>> import re
>>> x = re.findall(r"^([A-Z][a-z]?)([A-Z][0-9]*)$","CO2")
>>> list(x[0])
['C', 'O2']

总的来说,您可能更愿意使用
re.match
,并查看您得到的
组<代码>拆分
在您有某些要丢弃的分隔符时使用效果最好。建议: