为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不使用 .replace() 方法的情况下替换字符串中的单词,因为我希望该单词仅被删除一次

如何在不使用 .replace() 方法的情况下替换字符串中的单词,因为我希望该单词仅被删除一次

拉风的咖菲猫 2023-06-27 13:33:31
例如:我有一个 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条经验 获得超5个赞

如果顺序不重要,您可以使用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']


查看完整回答
反对 回复 2023-06-27
?
胡子哥哥

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']


查看完整回答
反对 回复 2023-06-27
  • 2 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信