【问题标题】:Python3 strip() get unexpect resultPython3 strip() 得到意外的结果
【发布时间】:2020-08-14 10:01:59
【问题描述】:

这是一个奇怪的问题

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'

如果我使用/ 而不是\\什么都没有 出错。我想知道为什么会出现这个问题。

【问题讨论】:

    标签: python-3.x encode strip


    【解决方案1】:

    strip 并不是要完全删除完整的字符串。相反,您给它一个字符串,该字符串中的每个字符都会从开头和要剥离的字符串中删除。

    在您的情况下,变量to_be_stripped 包含字符ml,因此它们从s1 的末尾被删除。但是,它不包含字符 x,因此剥离在此停止,除此之外的任何字符都不会被删除。

    查看this question。接受的答案可能比您需要的更广泛 - 我喜欢另一个用户的建议,即使用 replace 而不是 strip。这看起来像:

    s1.replace(to_be_stripped, "")
    

    【讨论】:

    • 我明白了!感谢您的帮助。
    • 不用担心。有很多方法可以做任何你想做的事情,所以很容易选择错误的方法!
    猜你喜欢
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多