理解python对字符串的lstrip方法

时间:2015-12-31 09:35:07

标签: python string methods

我遇到了我认为是一个错误,我正在寻找确认或我不理解这种方法是如何工作的。

这是我的基本输出:

(Pdb) x = 'KEY_K'
(Pdb) x.lstrip('K')
'EY_K'
(Pdb) x.lstrip('KE')
'Y_K'
(Pdb) x.lstrip('KEY')
'_K'
(Pdb) x.lstrip('KEY_')
''
(Pdb) import sys
(Pdb) sys.version
'2.7.11 (default, Dec  5 2015, 14:44:47) \n[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.1.76)]'

我的理解是,该示例中的最终'lstrip'应该返回'K',但事实并非如此。有谁知道为什么?

3 个答案:

答案 0 :(得分:8)

lstrip()函数的行为方式与您的想法完全不同。 x.lstrip(argument)从字符串argument的左侧删除x中的所有字符,直到它到达argument以外的字符。

所以'KEY_K'.lstrip('KEY_')生成'',因为最后一个字符K位于KEY_

答案 1 :(得分:5)

在文档中是正确的:

  

lstrip(...)       S.lstrip([chars]) - >字符串或unicode

     

返回字符串S的副本,删除前导空格。       如果给出了chars而不是None,删除字符中的字符。       如果chars是unicode,则在剥离之前S将转换为unicode

'K'位于'KEY_',这就是您的上一个示例返回''的原因。

请注意,如果前面有不在'K'的字符,则'KEY_'不会被删除:

>>> 'KEY_xK'.lstrip('KEY_')
'xK'

答案 2 :(得分:5)

lstrip的第二个arg是将被删除的 set 字符。如果您需要删除子字符串,可以使用:

if x.startswith('KEY_'):
    x = x.replace('KEY_', '', 1)