# -*- encoding:utf-8 -*- import ast import logging import re from flask_app.general.json_utils import clean_json_string from flask_app.general.多线程提问 import multi_threading from flask_app.工程标.判断是否分包等 import read_questions_from_judge def process_judge_questions(judge_file_path, chosen_numbers, file_id, baseinfo_list1): judge_questions = read_questions_from_judge(judge_file_path, chosen_numbers) judge_consortium = judge_consortium_bidding(baseinfo_list1) if judge_consortium: judge_consortium_question = ( "该招标文件对于联合体投标的要求是怎样的,请按json格式给我提供信息," "外层键名为'联合体投标要求',其中有一个嵌套键值对为:\"是否接受联合体投标\":\"是\"" ) judge_questions.append(judge_consortium_question) # file_id3 = upload_file(merged_baseinfo_path) res2 = multi_threading(judge_questions, "", file_id, 2) if not res2: print("基础信息整合: multi_threading error!") else: for question, response in res2: baseinfo_list1.append(clean_json_string(response)) def judge_consortium_bidding(baseinfo_list): updated_list = [] accept_bidding = False for baseinfo in baseinfo_list: # 检查 "是否接受联合体投标" 键是否存在且其值为 "是" if "是否接受联合体投标" in baseinfo and baseinfo["是否接受联合体投标"] == "是": accept_bidding = True # 从字典中移除特定键值对 baseinfo.pop("是否接受联合体投标", None) # # 将修改后的 json 数据转换回 JSON 字符串(如果需要) # updated_info = json.dumps(json_data) updated_list.append(baseinfo) # 更新原始列表,如果你想保留修改 baseinfo_list[:] = updated_list return accept_bidding #字符串列表转为普通列表,从qianwen回答中提取 def process_string_list(string_list): # 使用正则表达式匹配方括号内的内容 match = re.search(r'\[(.*?)\]', string_list) if match: # 获取匹配的内容,即方括号内的部分 content_inside_brackets = match.group(1) if content_inside_brackets: # 检查内容是否为空 # 检查内容是否是数字列表 if all(item.strip().isdigit() for item in content_inside_brackets.split(',')): # 如果是数字,不用加引号,直接保留数字 formatted_list = '[' + ', '.join(item.strip() for item in content_inside_brackets.split(',') if item.strip()) + ']' else: # 如果不全是数字,按字符串处理 formatted_list = '[' + ', '.join(f"'{item.strip()}'" for item in content_inside_brackets.split(',') if item.strip()) + ']' else: return [] # 直接返回空列表如果内容为空 # 使用 ast.literal_eval 来解析格式化后的字符串 try: actual_list = ast.literal_eval(formatted_list) return actual_list except SyntaxError as e: print(f"禁止投标情形: Error parsing list: {e}") return [] else: # 如果没有匹配到内容,返回空列表 return [] def get_global_logger(unique_id): if unique_id is None: return logging.getLogger() # 获取默认的日志器 logger = logging.getLogger(unique_id) return logger