Python3 strip() 得到意外结果
Python3 strip() get unexpect result
这是一个奇怪的问题
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'
这是正确的输出。
然而,如果我们将所有Project Known
替换为zeus_pipeline
:
to_be_stripped="D:\Users\UserKnown\PycharmProjects\zeus_pipeline\PT\collections\120"
并且:
s2="D:\Users\UserKnown\PycharmProjects\zeus_pipeline\PT\collections\120\_rels\.rels"
s2.lstrip(to_be_stripped)
将是'.rels'
如果我使用 /
而不是 \
, 不会出错 。我想知道为什么会出现这个问题。
strip
并不意味着完全删除完整的字符串。相反,您给它一个字符串,然后从开头删除该字符串中的每个字符,并从要删除的字符串中删除。
在您的例子中,变量 to_be_stripped
包含字符 m
和 l
,因此这些字符从 s1
的末尾删除。但是,它不包含字符 x
,因此剥离在那里停止,除此之外的任何字符都不会被删除。
查看 this question。接受的答案可能比您需要的更广泛 - 我喜欢另一个用户使用 replace
而不是 strip
的建议。这看起来像:
s1.replace(to_be_stripped, "")
这是一个奇怪的问题
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'
这是正确的输出。
然而,如果我们将所有Project Known
替换为zeus_pipeline
:
to_be_stripped="D:\Users\UserKnown\PycharmProjects\zeus_pipeline\PT\collections\120"
并且:
s2="D:\Users\UserKnown\PycharmProjects\zeus_pipeline\PT\collections\120\_rels\.rels"
s2.lstrip(to_be_stripped)
将是'.rels'
如果我使用 /
而不是 \
, 不会出错 。我想知道为什么会出现这个问题。
strip
并不意味着完全删除完整的字符串。相反,您给它一个字符串,然后从开头删除该字符串中的每个字符,并从要删除的字符串中删除。
在您的例子中,变量 to_be_stripped
包含字符 m
和 l
,因此这些字符从 s1
的末尾删除。但是,它不包含字符 x
,因此剥离在那里停止,除此之外的任何字符都不会被删除。
查看 this question。接受的答案可能比您需要的更广泛 - 我喜欢另一个用户使用 replace
而不是 strip
的建议。这看起来像:
s1.replace(to_be_stripped, "")