字符串切片的方法?
我有一个字符串,比如:
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"
)。