2009-06-18 57 views
10

我有一个字符串,例如:字符切片的Python

s = "this is a string, a" 

其中 ''(逗号)将始终是第三最后一个字符,又名S [-3]。

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

我怎样才能以更简单的方式完成这项工作?

+4

我认为string.replace是不可能的?你需要保留字符串中的其他逗号吗? – 2009-06-18 05:49:31

+0

我愿意。让我去看看string.replace – sqram 2009-06-18 06:26:06

回答

28

通常情况下,你只需要做:

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

s[:-3]给你一个字符串,最多,但不包括你要的逗号删除("this is a string")和s[-2:]为您提供启动一个字符超越另一个字符串那个逗号(" a")。

然后,将这两个字符串连接在一起会给你以后的东西("this is a string a")。

3

Python字符串是不可变的。这意味着你必须创建至少1个新的字符串,以删除逗号,而不是在语言编辑字符串代替像C.

1

在文本中删除所有的“”字符,可以尝试

s = s.split(',') 
>> ["this is a string", " a"] 
s = "".join(s) 
>> "this is a string a" 

或者在同一行:

s0 = "".join(s.split(',')) 
7

几个变种,使用“删除最后一个逗号”而不是“删除第三的最后一个字符”是:

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

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

但这些都是很丑陋。稍微好一点的是:

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

这可能是最好的办法,如果你不知道这个逗号的位置(除了字符串最后一个逗号),有效地需要一个“右替换”。但是Anurag's answer对于“删除倒数第三个字符”更为pythonic。

0

最好简单的方法是:你可以使用替换功能: -

>>> s = 'this is a string, a' 
>>> s = s.replace(',','') 
>>> s 
'this is a string a' 

这里,替换()功能搜索字符“”和更换‘’,即空字符

需要注意的是,替换()函数的默认所有的“”但如果你只是想更换一些情况下,一些“”你可以使用:s.replace(“”,‘’,1)