0
我有一個元素的列表,我想從一個字符串中刪除:找到列表串 - 蟒蛇
例
list = ['345','DEF', 'QWERTY']
my_string = '12345XYZDEFABCQWERTY'
有沒有辦法來迭代列表,找到在哪裏字符串中的元素?我的最終目標是從字符串中刪除這些元素(我不知道這是正確的方式,因爲字符串是不可變的)
我有一個元素的列表,我想從一個字符串中刪除:找到列表串 - 蟒蛇
例
list = ['345','DEF', 'QWERTY']
my_string = '12345XYZDEFABCQWERTY'
有沒有辦法來迭代列表,找到在哪裏字符串中的元素?我的最終目標是從字符串中刪除這些元素(我不知道這是正確的方式,因爲字符串是不可變的)
你可以使用一個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。
看看正則表達式 –
你在找[find](https://docs.python.org/2/library/string.html#string.find)嗎? – glibdud