2012-11-24 67 views
1

假設字符末尾有字符's,我該如何刪除它?刪除字符串中的字符「's」

下面是我的嘗試:

st = "s'ss python's is fun's " 
for ch in st: 
    if ch[-2:] in "'s": # check if last two index is 's 
     st = st.replace(ch, "") 

輸出應該是: 「s'ss蟒蛇很有趣」

不知怎的,它會刪除所有s',而不只是在最後。

我該如何刪除有「s」的字符。

+1

你想用正則表達式 –

+1

'在ST CH:'通過每一個字符,而不是你想要的行爲循環。 –

回答

2

我認爲這完成了你要找的東西(對不起,如果我誤解了:))。這會將您的字符串分割爲空白字符,然後遍歷結果的「單詞」。如果單詞在's結束,該部分被刪除;如果不是,則返回整個單詞。結果然後用空格字符加入到返回一個字符串:

In [16]: st = "s'ss a python's is fun's " 

In [17]: ' '.join(s if s[-2:] != "'s" else s[:-2] for s in st.split()) 
Out[17]: "s'ss a python is fun" 
0
mylist = [] 
strin = "s'ss hello you's" 
mylist = list(strin) 
mylist.remove[-1] 
print str(mylist) 
#the output will be as , "s'ss hello you'" 
0

我會使用正則表達式,像這樣:

>>> import re 
>>> re.sub(r"'s\b", "", "s'ss python's ") 
"s'ss python " 

\b的開頭或結尾匹配字)

0

首先,您的st以一個空格結尾 - 您可能想要將其刪除str.splitstr.lstrip

>>> st = "s'ss python's is fun's " 
>>> st = st.strip() 
>>> print(st) 
s'ss python's is fun's 

然後刪除尾隨's有許多不同的方法。

使用正則表達式是一個整潔的方式:

>>> import re 
>>> re.sub("'s$", "", st) 
"s'ss python's is fun" 

或者,如果字符串以's結束,你可以檢查,排除最後兩個字符:

>>> if st.endswith("'s"): 
...  st = st[:-2] 

不要使用str.rstrip做因爲它可能不像你所期望的那樣:

>>> st.rstrip("'s") # Bad 
"s'ss python's is fun" 

在這種情況下看起來是正確的,但正如文檔解釋的那樣,「[the]參數不是後綴;相反,它的值的所有組合被剝奪」。例如:

>>> "lots of ssssss's".rstrip("'s") 
'lots of '