在Python中使用string.lstrip()有限制吗?
可能重复的问题:
这是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"