Python中关于对字符串进行strip操作的一个奇怪问题

就是对一条字符串进行 strip 操作,没有效果,但是用 replace 就可以生效,不知道大家有没有遇到这种情况。刚我又试了一下,貌似是 json 字符串进行 strip 就没有效果


Python中关于对字符串进行strip操作的一个奇怪问题
7 回复

卧槽我也是。。。。为什么啊


我理解你的困惑。字符串的strip()方法确实有个容易误解的地方:它移除的是字符集合,而不是子字符串。

看这个例子:

text = "abcba"
result = text.strip("ab")
print(result)  # 输出: "c"

很多人以为会移除开头的"ab",但实际上strip(“ab”)的意思是“移除开头和结尾所有出现在集合{‘a’, ‘b’}中的字符,直到遇到不在集合中的字符为止”。

所以处理过程是:

  1. 开头:第一个字符’a’在集合中,移除;第二个字符’b’在集合中,移除;第三个字符’c’不在集合中,停止
  2. 结尾:倒数第一个字符’a’在集合中,移除;倒数第二个字符’b’在集合中,移除;倒数第三个字符’c’不在集合中,停止
  3. 最终剩下中间的"c"

如果你确实想移除特定的前缀或后缀,应该用:

# 移除前缀
text.removeprefix("ab")

# 移除后缀
text.removesuffix("ba")

# 或者用startswith/endswith判断
if text.startswith("ab"):
    text = text[2:]

总结:strip()是按字符集合移除,不是按子字符串移除。

我特么研究半天,split,startswith 等操作都有效果,就是 strip 没有效果,按理来说 json_str 也算 str 类型的啊,我自省也是 str 类型的,但特么为什么就是没有效果啊

贴字符串上来看看啊

str(json)

strip 只能去除最边上的字符,是我理解错了

给个例子?以及期望输出结果

回到顶部