简体   繁体   English

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

[英]Replace with string if it starts with string in another list

I have two lists of words: X and Y . 我有两个单词列表: XY I would like to replace words in list X by words in list Y if, and only if, the word in list X is exactly the same as the first part of the word in list Y. 我仅在且仅当列表X中的单词与列表Y中单词的第一部分完全相同时,才用列表Y中的单词替换列表X中的单词。

For example, I want to replace the word 'engage' (list X) by the word 'engagement' (list Y). 例如,我要用“参与”(列表Y)替换“参与”(列表X)。 My lists are below: 我的清单如下:

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

For this, I have to compare item by item of the two lists and replace items, right? 为此,我必须逐项比较两个列表中的项并替换项,对吗? How can I do that? 我怎样才能做到这一点?

You can loop over both lists, and select a given string from Y if it startswith a given string in X and break so you don't have to loop over all values in Y , or otherwise keep the string from X : 您可以通过这两个列表循环,然后从给定的字符串Y如果startswith在给定的字符串Xbreak ,所以你不必遍历所有值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)

Output 输出量

['les', 'engagements', 'du', 'dent', 'devant'...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM