我有一个很长的列表,其中包含如下字符串值:
AB65
我想从数字中分割字母,但是当我这样做时:
re.split('([A-Z]+)([0-9]+)', 'AB65')
我得到以下空字符串值:
['', 'AB', '65', '']
如何获得这样的值:[' AB',' 65'] 谢谢你的帮助。
答案 0 :(得分:3)
re.split
用于在正则表达式匹配之间获取文本;你需要的是re.findall
而不是:
>>> re.findall('([A-Z]+)([0-9]+)', 'AB65')
[('AB', '65')]
这仍然无法正常工作,因为正则表达式匹配整个字符串'AB65'
并包含两个捕获组。所以我们需要一个匹配 字母或数字的正则表达式(所以用|
分隔它们),并使用非捕获组(所以使用{{1 }}):
(?:…)
事实上,在这个简单的例子中,括号甚至不是必需的:
>>> re.findall('(?:[A-Z]+)|(?:[0-9]+)', 'AB65')
['AB', '65']