2011-05-27 152 views
1

如何切片比較我的列表字符串。Python字符串切片

string = "how to dye my brunet hair to blonde? " 
list = ['how', 'how to',...] 

我想要代碼刪除「如何」並打印剩下的部分。

dye my brunet hair to blonde? 

任何想法?

+0

順便說一句,除非你真的想要這樣的行爲(有時候你會這樣做),否則避免給你的變量使用相同的名字是一種好習慣。IOW,你可能不想調用你的列表「list」 。 – DSM 2011-05-27 08:00:37

回答

3

這應該確保更換隻在開始時進行。雖然不是非常有效。如果清楚你想要做什麼,它可能會有所幫助。

string = "how to dye my brunet hair to blonde? " 
list = ['how', 'how to',"bananas"] 
list.sort(key=len,reverse=True) # sort by decreasing length 

for sample in string, "bananas taste swell", "how do you do?": 
    for beginning in list: 
    if sample.startswith(beginning): 
     print sample[len(beginning):] 
     break 
    else: # None of the beginnings matched 
    print sample 
+1

+1做反向排序來處理排序依賴 – slothrop 2011-05-27 07:58:46

+0

謝謝,實際上這就是我想要的。 – bekman 2011-05-27 08:10:21

+0

+1和@bekman:請記住標記爲您的問題的「答案」。 – tzot 2011-05-28 13:53:54

6
In [1]: s = "how to dye my brunet hair to blonde? " 

In [2]: print s.replace("how to", "") 
dye my brunet hair to blonde? 

當使用這種方式,replace將取代它的第一個參數的所有出現的第二個參數。它也需要一個可選的第三個參數,這會限制所做的替換次數。例如,如果您只希望替換第一次出現的「如何」,這很有用。

+2

「如何弄清楚如何更換燈泡?」 – 2011-05-27 07:25:57

2
>>> string[len('how to'):] 
' dye my brunet hair to blonde? ' 
1

由於其他答案不拿名單考慮:

input = "how to be the best python programmer of all time" 
#note that the longer ones come first so that "how" doesn't get cut and then "how to" never exists 
stopwords = ['how to', 'how'] 
for word in stopwords: 
    input = input.replace(word, '', 1) 

print input 
+2

優秀!我希望我能投票給你。 – bekman 2011-05-27 08:32:42