谁能解释这是怎么回事:

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:”中,因此将删除所有这些字符。同样地:

>>> s = 'abcadef'
>>> s.lstrip('abc')
'def'
>>> s.lstrip('cba')
'def'
>>> s.lstrip('bacabacabacabaca')
'def'
str.lstrip不会从左侧删除整个字符串(长度大于1)。如果要这样做,请在开头使用带 anchor ^的正则表达式:
>>> import re
>>> s = 'REFPROP-MIX:METHANOL&WATER'
>>> re.sub(r'^REFPROP-MIX:', '', s)
'METHANOL&WATER'

关于python - strip 删除的字符超出预期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34297084/

10-13 09:42