字符串切片的方法?

14 投票
7 回答
51085 浏览
提问于 2025-04-15 12:19

我有一个字符串,比如:

s = "this is a string, a"

在这个字符串中,','(逗号)总是倒数第三个字符,也就是s[-3]

我在想怎么去掉这个逗号,但我只想到把字符串转换成列表,删除逗号,然后再转换回字符串。不过这样做似乎有点麻烦,感觉对于这个简单的任务来说太复杂了。

有没有更简单的方法可以做到这一点呢?

7 个回答

3

Python中的字符串是不可变的。这意味着你必须创建至少一个新的字符串来去掉逗号,而不能像在C语言中那样直接修改原来的字符串。

8

有几种变体,使用“删除最后一个逗号”而不是“删除倒数第三个字符”的方法如下:

s[::-1].replace(",","",1)[::-1]

或者

''.join(s.rsplit(",", 1))

不过这些方法看起来都不太好。稍微好一点的是:

a, _, b = s.rpartition(",")
s = a + b

如果你不知道逗号的位置(除了字符串中的最后一个逗号),这可能是最好的方法,实际上你需要的是“从右边替换”。不过,Anurag的回答在“删除倒数第三个字符”这个问题上更符合Python的风格。

32

通常,你可以这样做:

s = s[:-3] + s[-2:]

这里的 s[:-3] 是指获取一个字符串,直到你想去掉的逗号为止,但不包括这个逗号(比如说 "this is a string")。而 s[-2:] 则是从那个逗号的下一个字符开始获取另一个字符串(比如说 " a")。

最后,把这两个字符串合在一起,就得到了你想要的结果("this is a string a")。

撰写回答