正则表达式 - 如何将列表中的部分元素与 txt 文件中的模式匹配(处理中文字符)
regex - how to match parts of an element in a list to patterns in a txt file(processing chinese characters)
我是 python 和正则表达式的新手,我正在尝试将列表中的部分元素与 txt 文件中的模式相匹配。
下面是一个例子:
name_list = ["林俊杰","林宥嘉","周杰伦","宋祖英"]
pattern = [“杰伦”,“俊杰”]
我想要做的是遍历 name_list 中的每个元素,并比较元素的任何部分是否与模式列表中的模式匹配。例如,在 name_list[0] 中,"俊杰" 匹配模式列表中的第二个模式。
new_list=[]
每当匹配发生时,我想将匹配附加到一个新列表,其顺序与 name_list 中的元素相同。例如,我希望“俊杰”成为new_list中的第一个元素。
此外,我需要从 txt 文件中导入图案。我也不知道该怎么做。
有人可以帮我吗?
只要模式列表只包含文字字符串,您就可以不使用正则表达式来做到这一点,如果情况并非总是如此,您只需将条件 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
,并比较当前成功的 "pattern" 和前一个
之间的子字符串索引。
关于如何读取文件,基本教程or/and稍微搜索一下就会对你有帮助。
我是 python 和正则表达式的新手,我正在尝试将列表中的部分元素与 txt 文件中的模式相匹配。
下面是一个例子: name_list = ["林俊杰","林宥嘉","周杰伦","宋祖英"] pattern = [“杰伦”,“俊杰”] 我想要做的是遍历 name_list 中的每个元素,并比较元素的任何部分是否与模式列表中的模式匹配。例如,在 name_list[0] 中,"俊杰" 匹配模式列表中的第二个模式。
new_list=[] 每当匹配发生时,我想将匹配附加到一个新列表,其顺序与 name_list 中的元素相同。例如,我希望“俊杰”成为new_list中的第一个元素。
此外,我需要从 txt 文件中导入图案。我也不知道该怎么做。 有人可以帮我吗?
只要模式列表只包含文字字符串,您就可以不使用正则表达式来做到这一点,如果情况并非总是如此,您只需将条件 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
,并比较当前成功的 "pattern" 和前一个
关于如何读取文件,基本教程or/and稍微搜索一下就会对你有帮助。