regex - как сопоставить части элемента в списке с шаблонами в текстовом файле (обработка китайских символов)

Я новичок в Python и регулярных выражений, и я пытаюсь сопоставить часть элемента из списка с шаблонами в текстовом файле.

Ниже приведен пример: name_list = ["林俊杰","林宥嘉","周杰伦","宋祖英"] pattern = ["杰伦","俊杰"] То, что я пытаюсь сделать, - это перебрать каждый элемент в name_list и сравните, если какая-либо часть элемента соответствует шаблонам в списке шаблонов. Например, в name_list[0] "俊杰" соответствует второму шаблону в списке шаблонов.

new_list = [] всякий раз, когда происходит совпадение, я хочу добавить совпадение в новый список в том же порядке, что и элементы в name_list. Например, я хочу, чтобы "俊杰" был первым элементом в new_list.

Также мне нужно импортировать шаблон из текстового файла. Я тоже понятия не имею, как это сделать. Может ли кто-нибудь помочь мне с этим, пожалуйста?

1 ответ

Решение

Вы можете сделать это без использования регулярных выражений, если список шаблонов содержит только буквенные строки, если это не всегда так, вам нужно только изменить условие if p in s в if re.search(p, s):

def getMatchPattern(patterns, s):
    for p in patterns:
        if p in s:
            return p
    return ''

name_list = ["林俊杰","林宥嘉","周杰伦","宋祖英"]
pattern_list = ["杰伦","俊杰"]

result = [getMatchPattern(pattern_list, x) for x in name_list]

Обратите внимание, что если строка содержит несколько строк из списка шаблонов, первая строка в списке выигрывает (а не первая в строке). Если вы хотите изменить это поведение, вы можете удалить return из цикла, и сравните индексы подстрок между текущим успешным "шаблоном" и предыдущим.

О том, как читать файл, вам поможет базовый учебник или небольшой поиск.

Другие вопросы по тегам