切片的方法?

sqr*_*ram 12 python

我有一个字符串,例如:

s = "this is a string, a"
Run Code Online (Sandbox Code Playgroud)

其中','(逗号)将始终是第3个到最后一个字符,aka s[-3].

我正在考虑删除','的方法,但只能想到将字符串转换为列表,删除它,并将其转换回字符串.然而,对于简单的任务来说,这似乎有点太多了.

我怎样才能以更简单的方式实现这一目标?

Anu*_*yal 31

通常,你会这样做:

s = s[:-3] + s[-2:]
Run Code Online (Sandbox Code Playgroud)

s[:-3]给你一个字符串,最多,但不包括逗号你想删除("this is a string")和s[-2:]给你另一个字符串开始一个字符超出了逗号(" a").

然后,将两个字符串连接在一起就可以得到你所追求的("this is a string a").


Bri*_*ian 7

使用"删除最后一个逗号"而不是"删除第三个最后一个字符"的几个变体是:

s[::-1].replace(",","",1)[::-1]
Run Code Online (Sandbox Code Playgroud)

要么

''.join(s.rsplit(",", 1))
Run Code Online (Sandbox Code Playgroud)

但这些都很难看.稍微好一点是:

a, _, b = s.rpartition(",")
s = a + b
Run Code Online (Sandbox Code Playgroud)

如果你不知道逗号的位置(除了字符串中的最后一个逗号)并且实际上需要"从右边替换",这可能是最好的方法.然而,对于"删除第三个最后一个字符",Anurag的答案更为pythonic.