【问题标题】:Replace string in list with string from another list if it includes that string (in Python) [closed]如果列表中包含该字符串(在 Python 中),则将列表中的字符串替换为另一个列表中的字符串 [关闭]
【发布时间】:2021-07-04 21:31:54
【问题描述】:

我有 2 个列表:

list1 是我想要的语言标签列表,现在只有 2 个:list1 = ['en', 'es']

list2是一个音频ID列表,可以是任意长度,例如list2 = ['audio_es-419_1=384000', 'audio_en-US_5=256000', 'audio_en-US_4=384000', 'audio_es-419=128000']

等等

我需要在list2 中查找来自list1 的字符串,如果list2 字符串包含来自list1 的字符串,则将其替换为该字符串。

所以对于上述list2 的示例,所需的输出将是['es', 'en', 'en', 'es']

我不介意有重复的条目。

已经对此感到震惊了一段时间,尝试了一些 for 循环的变体,其中包含字符串替换,但不幸的是,我的知识相当有限,无法实现我所需要的。

非常感谢您对此的帮助,并在此先感谢!

【问题讨论】:

  • "已经对此有一段时间了,尝试了一些 for 循环的变体,其中包含字符串替换,但不幸的是,我的知识相当有限,无法实现我所需要的。”如果您向我们展示这些尝试,我们只能告诉您这些尝试出了什么问题,并向我们展示任何导致的 complete error messages。另请阅读How to Askericlippert.com/2014/03/05/how-to-debug-small-programs
  • 请提供预期见MRE - Minimal, Reproducible Example。显示中间结果与预期结果的偏差。我们应该能够将您的代码块粘贴到文件中,运行它并重现您的问题。这也让我们可以在您的上下文中测试任何建议。我们期望这个问题的最小工作示例,包括跟踪内部操作的适当代码。

标签: python string list replace


【解决方案1】:

您可能不应该覆盖list2,而是为此添加一个新列表。我添加了一个“坏”值用于测试目的

list1 = ['en', 'es']

list2 = ['audio_es-419_1=384000', 'audio_en-US_5=256000', 'audio_en-US_4=384000', 'audio_es-419=128000', 'blah']

list3 = []

for i in list2:
    for x in list1:
        if x in i:
            list3.append(x)

print(list3)

['es', 'en', 'en', 'es']

【讨论】:

  • 对具体问题的好回答。但是我建议if x in i 将来可能会导致问题,并且正则表达式匹配(或类似的)会进行更好的比较。
  • @dkamins 你可能是对的,对于更复杂的字符串,正则表达式会得到更充分的证明
猜你喜欢
  • 1970-01-01
  • 2020-03-24
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2021-05-22
  • 2019-01-30
  • 1970-01-01
相关资源
最近更新 更多