You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从API获取数据写入TXT后,读取JSON对象遇单引号问题求助

兄弟,这问题我之前处理JSON数据的时候也踩过坑!核心问题其实是你错误地把单个JSON字符串拼成列表后直接转成字符串写入文件了,而不是把整个数据结构序列化成标准的JSON格式。下面给你两个思路,优先从根源解决,实在不行再修复已有文件:

最优解决方案:从写入阶段避免问题

不要把单个JSON字符串存进列表再转成字符串写入,而是直接把包含原始字典的Python列表,一次性序列化成合法的JSON数组写入文件。这样写入的内容本身就是符合JSON规范的,读取时直接加载就行,完全不会出现单引号的问题。

示例代码:

import json

# 假设这是你从API拿到的原始字典列表
api_data = [
    {"md1": {"id": 422, "h": "bla"}},
    {"md2": {"id": 42211, "h": "bla2"}}
]

# 直接把整个列表序列化为JSON写入文件
with open('data.txt', 'w', encoding='utf-8') as f:
    json.dump(api_data, f, ensure_ascii=False)

# 读取时直接加载为Python对象
with open('data.txt', 'r', encoding='utf-8') as f:
    loaded_data = json.load(f)

print(loaded_data)  # 输出:[{'md1': {'id': 422, 'h': 'bla'}}, {'md2': {'id': 42211, 'h': 'bla2'}}]

这个方法的好处是完全遵循JSON规范,从根源上杜绝了单引号问题,后续读取也不需要额外处理,是最推荐的做法。

修复已有错误文件的方法

如果已经生成了带有单引号的错误文件,不要直接用字符串替换单引号(万一JSON内容里本身包含单引号,替换会破坏结构),可以用ast.literal_eval安全解析列表,再逐个加载每个JSON字符串:

示例代码:

import json
import ast

with open('data.txt', 'r', encoding='utf-8') as f:
    file_content = f.read()

# 先把文件中的字符串解析成Python列表(ast.literal_eval比eval安全,不会执行恶意代码)
json_str_list = ast.literal_eval(file_content)
# 遍历列表,逐个解析每个JSON字符串为字典
loaded_data = [json.loads(item) for item in json_str_list]

print(loaded_data)

这个方法可以安全修复已有文件的问题,同时避免破坏JSON内部的合法字符。

内容的提问来源于stack exchange,提问作者arsenal88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:07:32