比re.sub更快(和更Pythonic)的解决方案?删除前缀(由许多相同的字符组成)



我正在尝试从给定字符串中删除前缀,其中包含未知长度的连续"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') .

最新更新