我有一个像这样的字符串:ape4banana3
我像这样拆分它:
>>>re.split('([1-5]?)|\s', "ape4banana3")
['ape', '4', 'banana', '3', '']
为什么''
我的结果会出现尾随?我可以通过编写更智能的正则表达式来摆脱它吗?
旁注:正则表达式有交替,因为有时字符串看起来像这样:ape4 banana3
然后我想丢失空格。
额外的功劳:有没有办法我可以得到这个结果?['ape4', 'banana3']
?
我有一个像这样的字符串:ape4banana3
我像这样拆分它:
>>>re.split('([1-5]?)|\s', "ape4banana3")
['ape', '4', 'banana', '3', '']
为什么''
我的结果会出现尾随?我可以通过编写更智能的正则表达式来摆脱它吗?
旁注:正则表达式有交替,因为有时字符串看起来像这样: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]
用更具体或更不具体的模式替换,此正则表达式仅基于您在此处发布的字符串。
这是因为 3 正在劈香蕉,最后是空串。
至于第二个结果,你可以在 \s 上拆分吗?
编辑哦,我明白了,空间并不总是在那里。
你可以像这样匹配:
([A-Za-z].?[1-5])([A-Za-z].?[1-5])
括号用于将每个封闭的部分放入一个组中,该组将作为其自己的数组单元包含。