2010-08-18 67 views
9

刪除部分字符串我有一個字符串的Python通過索引

string='texttexttextblahblah",".' 

,我想通過索引做的是削減一些最右邊的字符並將其分配給string,使string將等於texttexttextblahblah"什麼

我環顧四周,發現如何通過索引打印,但不知道如何重新分配要修剪的實際變量。

+0

可能重複的[Python中刪除的字符串的最後3個字符(http://stackoverflow.com/questions/1798465/ python-remove-last-3-characters-of-a-string) – outis 2012-04-19 22:34:44

回答

14

只需重新分配您打印的變量。

>>> string='texttexttextblahblah",".' 
>>> string = string[:-3] 
>>> string 
'texttexttextblahblah"' 
>>> 

此外,避免使用變量

除非你知道你到底有多少textblah的具有圖書館或內建(string)的名稱,使用.find()布倫特建議(或.index(x),這就像發現,除非抱怨,當它沒有找到x)。

如果您想要追蹤",只需將它加上一個值即可。 (或只是find你真的想在分裂的價值,,

mystr = mystr[:mystr.find('"') + 1] 
+0

這正是我所希望的。謝謝!!! – Brian 2010-08-18 21:04:04

4

字符串是不可變的,所以你不能真正改變就地字符串。你需要將你想要的部分分出來,然後重新分配給原來的變量。

是這樣的東西你想要什麼? (注意,我離開了存儲索引變量,因爲我不知道你是如何使用此):

>>> s = 'texttexttextblahblah",".' 
>>> s.index('"') 
20 
>>> s = s[:20] 
>>> s 
'texttexttextblahblah' 
5

如果需要的東西,就像一個字符串,但是可變的你可以使用一個字節組

>>> s=bytearray('texttexttextblahblah",".') 
>>> s[20:]='' 
>>> print s 
texttexttextblahblah 

字節組具有所有常見字符串方法

2

我自己喜歡做沒有索引:(我最喜歡的分區被評論爲在速度和clearn贏家ESS中的註釋,所以我更新的原代碼)

s = 'texttexttextblahblah",".' 
s,_,_ = s.partition(',') 
print s 

結果

texttexttextblahblah" 
+0

他想要「在結果中(可能是一個錯字),但是。 – 2010-08-18 21:03:52

+0

's = s [:s.find(''')]'更高效 – 2010-08-18 21:04:20

+0

我自己做了改變,正如我注意到的那樣,喜歡更多的pythonic分裂或分區我自己。也就是說,我更喜歡「讓它以清晰的方式工作,然後進行優化。」 – 2010-08-18 21:06:42