regex - как сопоставить части элемента в списке с шаблонами в текстовом файле (обработка китайских символов) - PullRequest
0 голосов
/ 06 июня 2018

Я новичок в python и regex, и я пытаюсь сопоставить часть элемента из списка с шаблонами в текстовом файле.

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

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

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

1 Ответ

0 голосов
/ 06 июня 2018

Вы можете сделать это без использования регулярных выражений, если список шаблонов содержит только литеральные строки; если это не всегда так, вам нужно всего лишь изменить условие 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 из цикла и сравнить индексы подстрок между текущим успешным «шаблоном» и предыдущим.

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

...