谁能解释这是怎么回事:
s = 'REFPROP-MIX:METHANOL&WATER' s.lstrip('REFPROP-MIX') # this returns ':METHANOL&WATER' as expected s.lstrip('REFPROP-MIX:') # returns 'THANOL&WATER'
“ ME”发生了什么?冒号是lstrip的特殊字符吗?这特别令人困惑,因为它可以按预期工作:
s = 'abc-def:ghi' s.lstrip('abc-def') # returns ':ghi' s.lstrip('abd-def:') # returns 'ghi'
str.lstrip从字符串开始,从字符串中删除其参数中的所有字符。由于左前缀“ REFPROP-MIX:ME”中的所有字符都在参数“ REFPROP- MIX:”中,因此将删除所有这些字符。同样地:
str.lstrip
>>> s = 'abcadef' >>> s.lstrip('abc') 'def' >>> s.lstrip('cba') 'def' >>> s.lstrip('bacabacabacabaca') 'def'
str.lstrip并 没有 从左侧除去整个字符串(的长度大于1)。如果要这样做,请^在开头使用带锚的正则表达式:
^
>>> import re >>> s = 'REFPROP-MIX:METHANOL&WATER' >>> re.sub(r'^REFPROP-MIX:', '', s) 'METHANOL&WATER'