例如:我有一個 lista = ["john", "jack", "mike"]和一個像這樣的字符串s = jackmikejohnjackjack",我想將該字符串中的所有名稱附加到像 這樣的新列表中b = ["jack", "mike", "john", "jack", "jack"],因為您可能已經注意到還需要附加重復項,我嘗試過類似的操作:a = ["john", "jack", "mike"]s = "jackmikejohnjackjack"b = []for item in a: if item in s: b.append(item) 但這只會返回,在將名稱附加到 b 之后b = ['john', 'jack', 'mike']也不能使用,因為它會給出相同的答案s.replace(item, "")
2 回答

楊魅力
TA貢獻1811條經驗 獲得超6個贊
如果順序不重要,您可以使用re.findall:
import re
a = ["john", "jack", "mike"]
s = "jackmikejohnjackjack"
b = []
for item in a:
result = re.findall(item, s)
for subitem in result:
b.append(item)
print(b)
這會輸出:
['john', 'jack', 'jack', 'jack', 'mike']

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
如果您可以假設我們總是有出現的名稱,那么此代碼可以滿足您的要求:
>> a = ["john", "jack", "mike"]
>> s = "jackmikejohnjackjack"
>> b = []
>> while s:
for name in a:
if s.startswith(name):
b.append(name)
s = s[len(name):]
break
>> print(b)
['jack', 'mike', 'john', 'jack', 'jack']
添加回答
舉報
0/150
提交
取消