Как удалить / удалить символы из конца строки, которые соответствуют другому концу строки - PullRequest
1 голос
/ 16 апреля 2019

У меня есть тысячи строк (не на английском языке) в этом формате:

['MyWordMyWordSuffix', 'SameVocabularyItemMyWordSuffix']

Я хочу вернуть следующее:

['MyWordMyWordSuffix', 'SameVocabularyItem']

Поскольку строки неизменяемы, и яхочу начать сопоставление с конца Я продолжаю путать себя с подходом к нему.

Мое лучшее предположение - какой-то цикл, который начинается с конца строк и продолжает проверять совпадение.

Тем не менее, поскольку у меня есть так много из них для обработки, кажется, что должен быть встроенный способ быстрее, чем цикл по всем символам, но, поскольку я все еще изучаю Python, я не знаю ни одного (пока).

Ближайший пример, который я мог найти уже на SO, можно найти здесь , но это не совсем то, что я ищу.

Спасибо, что помогли мне!

1 Ответ

0 голосов
/ 16 апреля 2019

Вы можете использовать commonprefix из os.path, чтобы найти общий суффикс между ними:

from os.path import commonprefix

def getCommonSuffix(words):
    # get common suffix by reversing both words and finding the common prefix
    prefix = commonprefix([word[::-1] for word in words])
    return prefix[::-1]

, который затем можно использовать для вырезания суффикса из второй строкисписка:

word_list = ['MyWordMyWordSuffix', 'SameVocabularyItemMyWordSuffix']

suffix = getCommonSuffix(word_list)
if suffix:
    print("Found common suffix:", suffix)

    # filter out suffix from second word in the list
    word_list[1] = word_list[1][0:-len(suffix)]
    print("Filtered word list:", word_list)
else:
    print("No common suffix found")

Вывод:

Found common suffix: MyWordSuffix
Filtered word list: ['MyWordMyWordSuffix', 'SameVocabularyItem']

Демонстрация: https://repl.it/@glhr/55705902-common-suffix

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