在Python中使用string.lstrip()有限制吗?

7 投票
3 回答
6585 浏览
提问于 2025-04-16 10:52

可能重复的问题:
这是Python 2.7中的一个bug吗?

我发现 .lstrip() 这个函数在某些字符串上并没有像我预期的那样工作,特别是那些包含下划线的字符串。例如:

In [1]:  a='abcd_efg_hijk_lmno_pqrs_tuvw_xyz'   
In [2]: a.lstrip('abcd_efg')   
Out[2]: 'hijk_lmno_pqrs_tuvw_xyz'

在这里,'g' 和 'h' 之间的下划线 '_' 消失了。你知道这是为什么吗?

3 个回答

2

要实现你想要的效果:

>>> a = "foobar"
>>> sub = "foo"
>>> b = a[len(sub):]
>>> b
'bar'
7

你想要的内容是:

b = 'abcd_efg'
if a.startswith(b):
    a = a[len(b):]

正如str.lstrip文档中所说,

这里的chars参数并不是一个前缀;而是说它会去掉这些字符的所有组合:

>>> 'www.example.com'.lstrip('cmowz.')
'example.com'
14

.lstrip() 这个方法可能和你想的不太一样。它的作用是从字符串的左边去掉你提供的任何字符。第二个下划线和第一个下划线一样,所以它也被去掉了。

"aaaaaaaabbbbbbbc".lstrip("ab")  # "c"

撰写回答