小心,Python 中的 strip 方法容易把字符串削成"秃子"!

2024-05-09 14:23:34 浏览数 (2)

在Python中,处理字符串时经常会用到 strip、lstrip 和 rstrip 这三个方法,它们主要用于去除字符串中的空格。

例如,如果你想去除字符串左边的空格,可以使用 lstrip 方法:

代码语言:javascript复制
In [4]: "    pythonista daily     ".lstrip()
Out[4]: 'pythonista daily     '

如果你想去除字符串两边的空格,可以使用 strip 方法:

代码语言:javascript复制
In [5]: "    pythonista daily     ".strip()
Out[5]: 'pythonista daily'

如果你想去除字符串右边的空格,可以使用 rstrip 方法

代码语言:javascript复制
In [7]: "    pythonista daily     ".rstrip()
Out[7]: '    pythonista daily'

这些 (l/r)strip 方法还可以传入一个字符串作为参数,比如,如果你想从 pythonista daily 中删除" daily" ,你可能会尝试使用下面的代码

代码语言:javascript复制
In [1]: s="pythonista daily"

In [2]: s.rstrip(" daily")

一般人会认为输出结果是 pythonista ,但是实际结果是 pythonist,还额外删除了 'a'

代码语言:javascript复制
In [1]: s="pythonista daily"

In [2]: s.rstrip(" daily")
Out[2]: 'pythonist'

这是因为 (l/r)strip 方法接收的是字符集

即从 pythonista daily 这个字符串右侧向左遍历,如果遍历的元素在传入的字符集中都则都会被移除,上面的这几个元素依次是 y,l,i,a,d, ,a 都在 " daily"中,所以实际结果是 pythonist

如果要实现准确删除 " daily" 可以使用 .removesuffix() 方法

代码语言:javascript复制
In [11]: "pythonista daily".removesuffix(" daily")
Out[11]: 'pythonista'

对于处理字符串左边内容对应使用 removeprefix() 方法,这俩 remove* 方法最多只会删除字符串的一个实例内容

代码语言:javascript复制
In [10]: "pythonista daily daily".removesuffix(" daily")
Out[10]: 'pythonista daily'

0 人点赞