Python 3.x Python3 strip()获取意外结果
这是个奇怪的问题Python 3.x Python3 strip()获取意外结果,python-3.x,encode,strip,Python 3.x,Encode,Strip,这是个奇怪的问题 to_be_stripped="D:\\Users\\UserKnown\\PycharmProjects\\ProjectKnown\\PT\\collections\\120" 和下面的两个字符串: s1="D:\\Users\\UserKnown\\PycharmProjects\\ProjectKnown\\PT\\collections\\120\\[Content_Types].xml" s2="D:\\Users
to_be_stripped="D:\\Users\\UserKnown\\PycharmProjects\\ProjectKnown\\PT\\collections\\120"
和下面的两个字符串:
s1="D:\\Users\\UserKnown\\PycharmProjects\\ProjectKnown\\PT\\collections\\120\\[Content_Types].xml"
s2="D:\\Users\\UserKnown\\PycharmProjects\\ProjectKnown\\PT\\collections\\120\\_rels\.rels"
当我使用以下命令时:
s1.strip(to_be_stripped)
s2.strip(to_be_stripped)
我得到这些输出:
'[Content_Types].x'
'_rels\\.'
如果我使用lstrip()
,它们将是:
'[Content_Types].xml'
'_rels\\.rels'
哪个是正确的输出。
但是,如果我们将所有已知的项目
替换为宙斯管道
:
to_be_stripped="D:\\Users\\UserKnown\\PycharmProjects\\zeus_pipeline\\PT\\collections\\120"
以及:
s2.lstrip(待剥离)
将是'.rels'
如果我使用
/
而不是\\
,没有任何问题。我想知道为什么会出现这个问题。strip
并不意味着完全删除整个字符串。相反,您给它一个字符串,该字符串中的每个字符都将从要剥离的字符串的开头和结尾处删除
在您的例子中,要剥离的变量包含字符m
和l
,因此这些字符从s1
的末尾剥离。但是,它不包含字符x
,因此剥离将停止在该位置,并且不会删除超出该位置的字符
退房。公认的答案可能比您需要的更广泛-我喜欢另一位用户建议使用replace
而不是strip
。这看起来像:
s1.replace(to_be_stripped, "")
我明白了!谢谢你的帮助,不用担心。有很多方法可以做任何你想做的事情,所以很容易选择错误的方法!
s1.replace(to_be_stripped, "")