例如:我有一个 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
提交
取消