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

如何在Python中将多个TXT文件转换为JSON数据并合并?

解决Python单引号字典格式文件的读取与合并问题

错误原因

json.loads 严格遵循JSON规范,要求键名和字符串必须用双引号,但你的文件内容是Python原生字典格式(单引号),直接用JSON解析必然报错。

单文件读取修复方案

改用Python标准库的 ast.literal_eval,它可以安全解析Python字面量(包括单引号字典、列表等),代码如下:

import ast

with open('00e6f05f-a395-4ad0-b10c-e5ff575d26b7.txt', encoding='utf-8') as f:
    content = f.read().strip()
    file_content = ast.literal_eval(content)
print(file_content)

批量合并多文件的两种方案

方案1:合并为字典列表

适合每个TXT文件对应一个独立字典,最终汇总成列表:

import ast
import os

all_data = []
# 替换为你的文件目录,当前目录用"."即可
target_dir = "."

for filename in os.listdir(target_dir):
    if filename.endswith(".txt"):
        file_path = os.path.join(target_dir, filename)
        with open(file_path, encoding='utf-8') as f:
            content = f.read().strip()
            if not content:
                continue
            try:
                data = ast.literal_eval(content)
                all_data.append(data)
            except Exception as e:
                print(f"处理文件 {filename} 出错: {e}")

# 写入合并后的结果,可选择Python原生格式或标准JSON格式
with open("merged_data.txt", "w", encoding='utf-8') as f:
    # 保留Python单引号格式
    f.write(repr(all_data))
    # 转成标准JSON格式(双引号)请用下面一行替换:
    # import json; f.write(json.dumps(all_data, ensure_ascii=False, indent=2))

方案2:合并为单个大字典

适合每个文件的字典无重复键,或允许后续文件键值覆盖前面的:

import ast
import os

merged_dict = {}
target_dir = "."

for filename in os.listdir(target_dir):
    if filename.endswith(".txt"):
        file_path = os.path.join(target_dir, filename)
        with open(file_path, encoding='utf-8') as f:
            content = f.read().strip()
            if not content:
                continue
            try:
                data = ast.literal_eval(content)
                merged_dict.update(data)
            except Exception as e:
                print(f"处理文件 {filename} 出错: {e}")

# 写入合并后的字典
with open("merged_dict.txt", "w", encoding='utf-8') as f:
    f.write(repr(merged_dict))
    # 转JSON格式请替换为:
    # import json; f.write(json.dumps(merged_dict, ensure_ascii=False, indent=2))

关键注意点

  • ast.literal_eval 比直接用eval安全,不会执行恶意代码,仅解析合法Python字面量。
  • 无论字典内容是单行还是多行,f.read().strip()都能正常读取,无需拆分行拼接。
  • 合并字典时,重复键会被后续文件的键值覆盖,若需保留所有重复键,可修改逻辑为按文件名存储对应字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:51:56