如何将字符串中捕获组匹配的元素分类存入对应列表?
正则捕获元素分类存入嵌套列表实现方案
需求说明
将字符串中通过正则捕获组捕获的元素分类存入对应子列表,最终组成指定结构的嵌套列表。给定包含PERS、VERB、PL_ADVB等标记的目标字符串,需将捕获到的人名、动作动词、事件时间、事件地点分别存入对应子列表。
完整实现代码
import re input_text = "((PERS) Tomás), ((PERS) Kyara Gomez) y ((PERS) Camila) fueron a ((VERB) caminar) y ((VERB) saltar) ((PL_ADVB) en la montaña)(2023_-_02_-_05(00:00 am))((PL_ADVB) ((NOUN)en el parque amplio y naranja) por el otoño)" # 初始化空的子列表 list_of_persons, list_of_actions_or_verbs, list_of_when_happens, list_of_where_happens = [], [], [], [] # 带捕获组的正则模式 capture_pattern_persons = r"\(\(PERS\)" + r'((?:[\w,;.\s]*)+)' + r"\)" capture_pattern_actions_or_verbs = r"\(\(VERB\)" + r'((?:[\w,;.\s]*)+)' + r"\)" capture_pattern_about_where_happens = r"\(\(PL_ADVB\)" + r'((?:[\w,;.()\s]*)+)' + r"\)" capture_pattern_about_when_happens = r"\((\d*_-_\d{2}_-\d{2}\s*\(\d{2}:\d{2}\s*(?:am|pm)\))\)" # 捕获并处理各类型元素 # 捕获人名并去除前后空白 persons = re.findall(capture_pattern_persons, input_text) list_of_persons = [p.strip() for p in persons if p.strip()] # 捕获动作动词并去除前后空白 verbs = re.findall(capture_pattern_actions_or_verbs, input_text) list_of_actions_or_verbs = [v.strip() for v in verbs if v.strip()] # 捕获事件时间并去除前后空白 times = re.findall(capture_pattern_about_when_happens, input_text) list_of_when_happens = [t.strip() for t in times if t.strip()] # 捕获事件地点并去除前后空白 wheres = re.findall(capture_pattern_about_where_happens, input_text) list_of_where_happens = [w.strip() for w in wheres if w.strip()] # 按要求结构组装嵌套列表:[人名列表, 动词列表, 时间列表, 地点列表] info_list = [list_of_persons, list_of_actions_or_verbs, list_of_when_happens, list_of_where_happens] print(repr(info_list))
正则模式说明
capture_pattern_persons:捕获人名元素,对应嵌套列表的第一个子列表capture_pattern_actions_or_verbs:捕获动作动词元素,对应嵌套列表的第二个子列表capture_pattern_about_when_happens:捕获事件时间元素,对应嵌套列表的第三个子列表capture_pattern_about_where_happens:捕获事件地点元素,对应嵌套列表的第四个子列表
预期输出
[ ["Tomás", "Kyara Gomez", "Camila"], ["caminar", "saltar"], ["2023_-_02_-_05(00:00 am)"], ["en la montaña", "((NOUN)en el parque amplio y naranja) por el otoño"] ]
内容的提问来源于stack exchange,提问作者Matt095
相关产品推荐
相关产品推荐

