python - 删除比预期更多的字符

标签 python string

谁能解释一下这里发生了什么:

s = 'REFPROP-MIX:METHANOL&WATER'
s.lstrip('REFPROP-MIX')   # this returns ':METHANOL&WATER' as expected
s.lstrip('REFPROP-MIX:')   # returns 'THANOL&WATER'

那个“我”怎么了?冒号是 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 - 删除比预期更多的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34297084/

相关文章:

来自网格的 Python cv2.remap 创建像素化失真

python 3 : How can I add decimals that are inside a string

c# - 测试相似的字符串内容

Java Regex 屏蔽字母数字字符串并显示最后 4 位数字

python - 用空格数替换整数

Python:寻找最长路径

python - 用于将二维坐标映射到值的机器学习算法

python - 在 jinja2 中为父级使用包含文件中的 block

string - 快速打印字符串插值和文件夹路径

C: 当 Haystack 中找不到 Needle 时,my_strstr 返回 Needle