在python中使用string.lstrip()是否有限制?

时间:2011-01-30 02:34:57

标签: python

  

可能重复:
  Is this a bug in Python 2.7?

.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 个答案:

答案 0 :(得分:13)

.lstrip()没有按照您的想法行事。它从字符串的左端删除任何提供的字符。第二个下划线与第一个下划线一样,因此它也被删除了。

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

答案 1 :(得分:7)

你想要什么:

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

正如str.lstrip文档所述,

  

chars参数不是前缀;相反,它的所有值组合都被剥离了:

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

答案 2 :(得分:2)

做你想做的事:

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