import re import constant def add_prompt(text, se_order="aos"): prompt = [] for counter, se in enumerate(se_order): prompt.append(constant.SENTIMENT_ELEMENT[se] + " : " + f"") prompt = " ,".join(prompt) result = text + "| " + prompt return result def catch_answer(out, se_order): if out == constant.NO_TARGET: return [] pattern = r"" for se in se_order: if se != 's': pattern += f"\s*(?P<{constant.SENTIMENT_ELEMENT[se]}>[^;]+)\s*" else: pattern += f"\s*(?P<{constant.SENTIMENT_ELEMENT['s']}>positive|negative|neutral)\s*" result = [found_iter.groupdict() for found_iter in re.finditer(pattern,out)] for i in range(len(result)): for k, v in result[i].items(): result[i][k] = v.strip() return result