如何从txt文件导入词条替换JSON中patterns数组硬编码内容
从TXT文件加载词汇替换JSON硬编码数组实现方案
首先明确核心前提:标准JSON语法不支持直接引用外部文件,你写的"patterns": [words.txt]不是合法JSON格式,需要在代码加载配置的预处理环节完成TXT内容读取和替换,最终生成合法的配置对象供匹配逻辑使用,不需要改动原有词条匹配的业务代码。
实现步骤
- 第一步:整理词汇表TXT文件
词汇文件每行存一个词条,不需要加引号、逗号等JSON语法符号,空行会被自动过滤,示例words.txt内容:hi hello hey good morning 你好 - 第二步:修改配置文件写法
配置文件里直接按你预期的写法标记外部TXT引用即可,示例config.json:{ "patterns": [words.txt], "reply": "Hello! How can I help you?" } - 第三步:实现带TXT引用解析的配置加载逻辑
以Python实现为例,其他语言逻辑完全一致:读取配置原始文本 -> 正则匹配所有TXT引用标记 -> 读取对应TXT的词汇生成合法JSON数组 -> 替换原标记后再走标准JSON解析:import json import re from pathlib import Path def load_config(config_path: str) -> dict: config_file = Path(config_path) config_base_dir = config_file.parent raw_config_text = config_file.read_text(encoding="utf-8") def replace_txt_match(match_obj): json_key = match_obj.group(1) txt_file_name = match_obj.group(2).strip() # 读取TXT词条,自动过滤空行、去除每行首尾空白 word_list = [ line.strip() for line in (config_base_dir / txt_file_name).read_text(encoding="utf-8").splitlines() if line.strip() ] # 替换为合法JSON数组格式 return f"{json_key}: {json.dumps(word_list, ensure_ascii=False)}" # 匹配 "键名": [xxx.txt] 格式的外部引用 processed_config_text = re.sub( r'("patterns"\s*:)\s*\[\s*([a-zA-Z0-9_\-\.]+\.txt)\s*\]', replace_txt_match, raw_config_text ) return json.loads(processed_config_text) # 加载配置 config = load_config("config.json") # 后续原有匹配逻辑完全不用改,直接用config["patterns"]做检索即可
扩展说明
如果需要支持多个数组字段从不同TXT加载,只需要把正则里的固定键名
"patterns"改成通用键名匹配规则"([a-zA-Z0-9_]+)",就能自动识别所有配置项里的TXT引用,不需要为每个字段单独写解析逻辑。
后续新增、删除、修改词条只需要编辑对应TXT文件即可,不需要改动代码或者调整JSON配置结构,完全替换原有硬编码数组的维护方式。
内容的提问来源于stack exchange,提问作者Guest555
相关产品推荐
相关产品推荐

