Python 如果它以另一个列表中的字符串开头,则替换为字符串

Python 如果它以另一个列表中的字符串开头,则替换为字符串,python,list,Python,List,我有两个单词列表:X和Y。当且仅当列表X中的单词与列表Y中的单词的第一部分完全相同时,我想用列表Y中的单词替换列表X中的单词 例如,我想将单词“啮合”(列表X)替换为单词“啮合”(列表Y)。我的名单如下: X=['les', 'engage', 'du', 'dent', 'de', 'la', 'que', 'sont', 'aussi', 'ceux', 'des', 'dirigeants', 'de', 'la', 'société', '»', 'ferroviaire', ',',

我有两个单词列表:
X
Y
。当且仅当列表X中的单词与列表Y中的单词的第一部分完全相同时,我想用列表Y中的单词替换列表X中的单词

例如,我想将单词“啮合”(列表X)替换为单词“啮合”(列表Y)。我的名单如下:

X=['les', 'engage', 'du', 'dent', 'de', 'la', 'que', 'sont', 'aussi', 'ceux', 'des', 'dirigeants', 'de', 'la', 'société', '»', 'ferroviaire', ',', 'a-t-il', 'soutenu', 'de', 'des', 'élus', 'du', 'grand-est', 'réunis', 'à', 'l', '’', '.', 'le', 'président', 'de', 'la', 'république', ',', '(', 'à', 'droite', ')', ',', 'aux', 'tés', 'du', 'patron', 'de', 'la', 'sncf', ',', 'guillaume', ',', 'à', 'la', 'gare', ',', 'à', 'paris', ',', 'le', '1er', 'juillet', '2017.', 'van', 'der', 'l', '’', 'irrita', 'qui', ',', 'par', 'fois', ',', 's', '’', 'des', 'usa', 'de', 'la', 'sncf', 'face', 'aux', 'trains', 'suppri', 'ou', 'aux', 'dessertes', 'abandonnées', 'semble', 'avoir', 'aussi', 'saisi', 'le', 'président', 'de', 'la', 'république', '.', 'devant', 'des', 'élus', 'du', 'grand-est', ',', 'réunis', 'mardi', '26', 'février', 'à', 'l', '’', 'dans', 'le', 'cadre', 'du', 'grand', 'débat', ',', 'a', 'eu', 'des', 'mots', 'très', 'durs', 'contre', 'la', 'sncf', ',', 'qui', 'a', 'fermé', 'la', 'ligne', 'saint-dié', '-', 'le', '23', 'décembre', '2018', ',', 'alors', 'que', 'le', 'chef', 'de', 'l', '’', 's', '’', 'était', 'engagé', ',', 'durant', 'un', 'dans', 'les', 'tué', 'en', 'avril', '2018', ',', 'à', 'ce', 'qu', '’', 'elle', 'reste', 'opération', '.']
Y=['levant', 'lamés', 'devant', 'quenelle', 'irritation', 'cenelle', 'usagers', 'lavant', 'avant', 'opérationnelle', 'supprimés', 'engagements']

为此,我必须逐项比较两个列表并替换项目,对吗?如何操作?

您可以在两个列表上循环,并从
Y
中选择一个给定字符串(如果它在
X
中是给定字符串)和
break
,这样您就不必在
Y
中循环所有值,或者从
X
中保留该字符串:

X = ['les', 'engage', 'du', 'dent', 'de', 'la'...
Y = ['levant', 'lamés', 'devant', 'quenelle', 'irritation'...

l = []
for x in X:
    for y in Y:
        if y.startswith(x):
            # append y if the string starts with x
            l.append(y)
            # First match. Break to next x
            break
    # for-else statement
    # If no strings in y begin with x, append x
    else: 
        l.append(x)

输出


您可以在这两个列表上循环,并从
Y
中选择一个给定的字符串(如果它在
X
中是给定的字符串)和
break
,这样您就不必在
Y
中循环所有值,或者从
X
中保留该字符串:

X = ['les', 'engage', 'du', 'dent', 'de', 'la'...
Y = ['levant', 'lamés', 'devant', 'quenelle', 'irritation'...

l = []
for x in X:
    for y in Y:
        if y.startswith(x):
            # append y if the string starts with x
            l.append(y)
            # First match. Break to next x
            break
    # for-else statement
    # If no strings in y begin with x, append x
    else: 
        l.append(x)

输出


到目前为止你试过什么吗?当海报试图首先尝试谷歌搜索并试图解决你的问题时,人们更愿意提供帮助。然后用你迄今为止尝试过的方法更新你的问题。谢谢,我已经找到了解决方案!到目前为止你试过什么吗?当海报试图首先尝试谷歌搜索并试图解决你的问题时,人们更愿意提供帮助。然后用你迄今为止尝试过的方法更新你的问题。谢谢,我已经找到了解决方案!