我有一条这样的线: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只基于您在这里发布的字符串。

10-08 19:16