我正在尝试从给定字符串中删除前缀,其中包含未知长度的连续"X"字符。在大多数情况下,此前缀的长度为数千个字符。我想到的第一个解决方案是使用正则表达式 -
str = re.sub(r'X*', '', str)
一个明显的替代(也是更快的)解决方案是遍历每个字符直到它is not 'X'
,并相应地切片,但这很笨重,字符迭代似乎不是 Pythonic?
有人有什么建议吗?
提前谢谢。
我只会使用lstrip
:
>>> import re
>>> a = "X"*1000+"Y"*10000
>>> %timeit re.sub(r'X*', '', a)
1000 loops, best of 3: 940 µs per loop
>>> %timeit a.lstrip("X")
100000 loops, best of 3: 3.04 µs per loop
>>> a.lstrip("X") == re.sub(r'X*', '', a)
True
请注意,如果字符串包含不属于前缀的 X,则该调用re.sub
将删除它们,因此在任何情况下都可能不是您想要的。
这是
在标准库中:string.lstrip(s, 'X')
.