Заменить на строку, если она начинается со строки в другом списке - PullRequest
1 голос
/ 15 марта 2019

У меня есть два списка слов: X и Y. Я хотел бы заменить слова в списке X словами в списке Y тогда и только тогда, когда слово в списке X точно совпадает с первой частью слова в списке Y.

Например, я хочу заменить слово «заниматься» (список 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']

Для этого мне нужно сравнить элемент за элементом в двух списках и заменить элементы, верно? Как я могу это сделать?

1 Ответ

0 голосов
/ 15 марта 2019

Вы можете перебрать оба списка и выбрать заданную строку из Y, если она startswith заданную строку в 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)

Выход

['les', 'engagements', 'du', 'dent', 'devant'...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...