2017-04-11 230 views
0

我有一個元素的列表,我想從一個字符串中刪除:找到列表串 - 蟒蛇

list = ['345','DEF', 'QWERTY'] 
my_string = '12345XYZDEFABCQWERTY' 

有沒有辦法來迭代列表,找到在哪裏字符串中的元素?我的最終目標是從字符串中刪除這些元素(我不知道這是正確的方式,因爲字符串是不可變的)

+0

看看正則表達式 –

+0

你在找[find](https://docs.python.org/2/library/string.html#string.find)嗎? – glibdud

回答

2

你可以使用一個regex工會:

import re 

def delete_substrings_from_string(substrings, text): 
    pattern = re.compile('|'.join(map(re.escape, substrings))) 
    return re.sub(pattern, '', text) 

print(delete_substrings_from_string(['345', 'DEF', 'QWERTY'], '12345XYZDEFABCQWERTY')) 
# 12XYZABC 
print(delete_substrings_from_string(['AA', 'ZZ'], 'ZAAZ')) 
# ZZ 

它使用re.escape避免將字符串內容解釋爲文字正則表達式。

它只使用一個傳遞,所以它應該相當快,並確保第二個示例不會轉換爲空字符串。

如果您想要更快的解決方案,您可以構建一個Trie-based regex out of your substrings