为什么我在使用正则表达式拆分字符串时会得到额外的空命中?

2024-06-30 15:56:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个字符串:ape4banana3我像这样拆分它:

>>>re.split('([1-5]?)|\s', "ape4banana3")
['ape', '4', 'banana', '3', '']

为什么要在结果中得到后面的''?我可以写一个更聪明的正则表达式来摆脱它吗?你知道吗

旁注:regex有一个替换,因为有时字符串看起来像这样:ape4 banana3,然后我想去掉空白。你知道吗

额外的学分:有没有办法让我得到这个结果呢?['ape4', 'banana3']?你知道吗


Tags: 字符串re空白regexsplitbanana学分办法
2条回答

你看到了额外的空间,因为你在数字上分裂,所以你得到了最后一个数字后的空字符串。你知道吗

至于你的额外学分,这似乎是最简单的解决办法:

>>> 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只基于您在这里发布的字符串。你知道吗

这是因为3是分裂香蕉和一个空串在最后。你知道吗

至于第二个结果,您可以在\s上拆分吗?你知道吗

编辑哦,我明白了,空间并不总是存在的。你知道吗

你可以这样搭配:

 ([A-Za-z].?[1-5])([A-Za-z].?[1-5])

括号用于将每个封闭部分放入一个组中,该组将作为其自己的数组单元包含。你知道吗

相关问题 更多 >