我有一条这样的线:ape4banana3
我把它分成这样:
>>>re.split('([1-5]?)|\s', "ape4banana3")
['ape', '4', 'banana', '3', '']
为什么我在结果中得到后面的
''
?我可以写一个更聪明的正则表达式来摆脱它吗?附带说明:regex有替换,因为有时字符串看起来像这样:
ape4 banana3
,然后我想丢失空白。额外积分:有没有办法让我得到这个结果呢?
['ape4', 'banana3']
? 最佳答案
你看到的是额外的空格,因为你是在数字上分开的,所以你在最后一个数字后面得到了空字符串。
至于您的额外积分,这似乎是最简单的解决方案:
>>> re.findall(r"([a-zA-Z]+[1-5]+)", "ape4banana3")
['ape4', 'banana3']
>>> re.findall(r"([a-zA-Z]+[1-5]+)", "ape4 banana3")
['ape4', 'banana3']
根据您的用例,您可能需要用更具体或更不具体的模式替换
[a-zA-Z]
,这个regex只基于您在这里发布的字符串。