Python 使用伪标记替换基于另一个列表的列表项

Python 使用伪标记替换基于另一个列表的列表项,python,replace,token,Python,Replace,Token,所以,我是Python新手。如果我的列表中的值也在另一个列表中,我想替换它们,并将它们更改为指定的值pseudo token(OOV)。我已经将它们转换为令牌,并使用正则表达式稍微清理了代码。 这是我的代码: def replace_words(list1, list2): for word in list1: for words in list2: if word == words: word = "OOV" replace_words(list1

所以,我是Python新手。如果我的列表中的值也在另一个列表中,我想替换它们,并将它们更改为指定的值pseudo token(OOV)。我已经将它们转换为令牌,并使用正则表达式稍微清理了代码。 这是我的代码:

def replace_words(list1, list2):
  for word in list1:
    for words in list2:
     if word == words:
        word = "OOV"




replace_words(list1, list2)
list1.count("OOV") #this keeps showing 0, so something is wrong...

您的代码不起作用,因为您试图为变量
word
分配一个新值
OOV
,这很好,但实际上不会更改
list1
中的元素。因此,您需要在
list1

试试这个:

def replace_words(list1, list2):
  for idx in range(len(list1)):
      if list1[idx] in list2:
          list1[idx] = "OOV"
当您现在执行
>>list1.count(“OOV”)
时,如果
list1
中有值,它将不会返回0,而
list2中也有值


希望这有帮助

您的代码不起作用,因为您试图为变量
word
分配一个新值
OOV
,这很好,但实际上不会更改
list1
中的元素。因此,您需要在
list1

试试这个:

def replace_words(list1, list2):
  for idx in range(len(list1)):
      if list1[idx] in list2:
          list1[idx] = "OOV"
当您现在执行
>>list1.count(“OOV”)
时,如果
list1
中有值,它将不会返回0,而
list2中也有值


希望这有帮助

错误的做法是假设设置
word=“oov”
将替换列表中的元素。这不是真的,您需要通过访问该列表的索引进行替换。阅读更多关于

以下几点应该有效

def替换单词(列表1、列表2):
对于范围(0,len(list1)-1)中的i:#使用索引
对于列表2中的单词:
如果列表1[i]==单词:
列表1[i]=“OOV”
替换单词(列表1、列表2)
清单1.计数(“OOV”)

错误在于假设设置
word=“oov”
将替换列表中的元素。这不是真的,您需要通过访问该列表的索引进行替换。阅读更多关于

以下几点应该有效

def替换单词(列表1、列表2):
对于范围(0,len(list1)-1)中的i:#使用索引
对于列表2中的单词:
如果列表1[i]==单词:
列表1[i]=“OOV”
替换单词(列表1、列表2)
清单1.计数(“OOV”)

您的列表1和列表2是什么?如果这里有示例输入,能够真实地再现这一点,将非常有帮助。您的列表1和列表2是什么?如果这里有示例输入,能够真实地再现这一点,将非常有帮助。@KatGl如果这回答了您的问题,您可以接受答案作为正确答案来标记问题已完成。@KatGl如果这回答了您的问题,您可以接受答案作为正确答案,以标记问题已完成。