2009-06-18 55 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)