Python strip()无法正确剥离部分文件路径名

问题描述 投票:1回答:2

我想使用strip()方法剥离路径名称的特定部分,但看到的结果我无法解释。在这里解释我正在观察的行为以及解决方案将非常有帮助。

>>> a = 'C:\dir1\dir2\dir3'
>>> b = 'C:\dir1\dir2\dir3\dir4\dir5'
>>> b.strip(a)
'4\\dir5'

我期望b.strip(a)的输出为\dir4\dir5。我尝试使用原始字符串,甚至转义所有斜杠,但我似乎无法解释这里发生了什么。

python string
2个回答
2
投票
>>> help("".strip)
Help on built-in function strip:

strip(chars=None, /) method of builtins.str instance
    Return a copy of the string with leading and trailing whitespace removed.

    If chars is given and not None, remove characters in chars instead.

参数实际上不是被视为字符串,而是被视为要删除的字符的setb中最左边的字符而不是a中的字符是“ 4”,因此这就是为什么在开头保留4的原因。 b中最右边的字符而不是a中的最后一个字符是“ 5”,因此从右端没有删除任何内容。


2
投票

@@ TimPeters解释了为什么strip没有按照您的意愿做。对于您的应用程序,此代码将执行您想要的操作:

a = r'C:\dir1\dir2\dir3'
b = r'C:\dir1\dir2\dir3\dir4\dir5'

b = b[len(a):] if b.startswith(a) else b
print(b)

输出

\dir4\dir5
© www.soinside.com 2019 - 2024. All rights reserved.