如何将包含转义\n的JSON字符串原样写入文件
问题原因
JSON 解析器会按照 JSON 标准自动将字符串中的转义序列(如\n)转换为对应的控制字符,因此你解析后得到的j['text']本身已经是包含真实换行符的字符串,直接写入文件就会输出为两行内容。
解决方法
这里以最常见的 Python 场景为例提供两种可行方案:
方案1:字符串替换(仅处理\n,可控性高)
直接把解析后字符串里的真实换行符替换为\和n两个独立字符,不会影响其他内容:
import json with open("你的JSON文件路径.json", "r", encoding="utf-8") as f: j = json.load(f) # 替换换行符为转义表示 output_content = j["text"].replace("\n", r"\n") with open("输出文件路径.txt", "w", encoding="utf-8") as out: out.write(output_content)
方案2:统一转义所有控制字符
如果需要保留所有转义序列(如\t、\r等),可以用unicode_escape编码批量处理:
import json with open("你的JSON文件路径.json", "r", encoding="utf-8") as f: j = json.load(f) # 把所有控制字符转成对应的转义序列表示 output_content = j["text"].encode("unicode_escape").decode("utf-8") with open("输出文件路径.txt", "w", encoding="utf-8") as out: out.write(output_content)
注意:该方案会把非ASCII字符(比如中文)也转为
\uXXXX格式的Unicode转义序列,如果你不需要处理这类字符,优先使用方案1。
其他语言参考(Node.js)
如果是JavaScript/Node.js场景,可以通过JSON序列化后裁剪引号实现:
const fs = require("fs") const j = JSON.parse(fs.readFileSync("你的JSON文件路径.json", "utf-8")) const outputContent = JSON.stringify(j.text).slice(1, -1) fs.writeFileSync("输出文件路径.txt", outputContent)
内容的提问来源于stack exchange,提问作者Mr.cysl
相关产品推荐
相关产品推荐

