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
из цикла, и сравните индексы подстрок между текущим успешным "шаблоном" и предыдущим.
О том, как читать файл, вам поможет базовый учебник или небольшой поиск.