【问题标题】:Python doesn't consider character "c" in a string [duplicate]Python不考虑字符串中的字符“c”[重复]
【发布时间】:2020-08-12 11:53:53
【问题描述】:

我有一个这样的字符串:

mystring="Clusterd695c_ROUGE1.csv"

当我使用mystring.rstrip("_ROUGE1.csv") 时,我希望返回"Clusterd695c",但我得到"Clusterd695"。好像最后一个字符“c”还没有看到。这只发生在字符“c”上,其他字符都有效。像这样:

mystring="Clusterd695f_ROUGE1.csv"
mystring.rstrip("_ROUGE1.csv")

然后我得到"Clusterd695f",这是期待的。

我该如何纠正这个问题?

【问题讨论】:

    标签: python string nlp


    【解决方案1】:

    这对我来说有点令人惊讶,但问题是rstrip 在提供字符串时会将字符串视为一个集合并从字符串末尾删除字符,直到它们不属于该集合。因为在新创建的集合中有一个 'c'(即 csv),它也删除了最后的 'c',在 '5' 处停止,因为它不属于字符串“_ROUGE1.csv”。

    解决这个问题的一种方法是使用替换:mystring.replace("_ROUGE1.csv", "");另一种选择是简单地砍掉最后的len("_ROUGE1.csv") 字符。 replace 方法的一个警告是它将替换字符串中的字符串 anywhere,所以 "_ROUGE1.csv_ROUGE1.csv".replace("_ROUGE1.csv", "") == ""

    【讨论】:

    • strip() 函数总是以这种方式工作(即,将其参数视为字符集),所以我不明白这个惊喜。在给定的用例中,它只是调用了错误的函数。
    • 是的,mystring.replace("_ROUGE1.csv","") 解决了这个问题。
    • @guidot 因为它在任何其他语言中都不能像这样工作。 :-) 自动强制到一个(逻辑)集合绝对不是明确的(per zen)。 str.striphelp 条目也没有明确提及此行为(至少在 3.6.10 中)。所以我觉得有点意外。
    • @erip:鉴于没有类型字符集,我发现描述 如果给出 chars 而不是 None,则删除 chars 中的字符 足够清楚。 help file 好一点,但是:chars 参数是一个字符串,指定要删除的字符集,并且有一个与问题非常相似的示例。
    • 有类型set,但我们跑题了。 :-)
    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2015-03-14
    • 2020-10-14
    • 2019-06-25
    相关资源
    最近更新 更多