【发布时间】:2021-10-20 12:43:20
【问题描述】:
我有两个字符串,我想将数字序列与其他所有内容隔离开来。
例如:
import re
s = 'abc123abc'
print(re.split('(\d+)', s))
s = 'abc123abc123'
print(re.split('(\d+)', s))
输出如下:
['abc', '123', 'abc']
['abc', '123', 'abc', '123', '']
请注意,在第二种情况下,后面有一个空字符串。
显然我可以对此进行测试并在必要时将其删除,但这似乎很麻烦,我想知道是否可以改进 RE 以解决这种情况。
【问题讨论】:
-
你真的想要
['123', '123']作为结果吗? -
在这种情况下,你可以使用
s.strip("1234567890"),但是对于一个更复杂的正则表达式你会怎么做呢? -
无论如何,IMO 这是 Python - re.split: extra empty strings that the beginning and end list 的副本,除非 OP 确实想要
['123', '123'],在这种情况下,解决方案是使用findall,而不是split。 -
@mkrieger1 我应该更清楚我的问题。对不起。我想要如图所示的输出,但没有尾随的空字符串。使用 filter 可以满足我的需要