在数据处理工作中,尤其是处理结构化数据时,我们经常需要将一个文件中的多个数据条目分割并保存为独立的小文件。
例如,假设你有一个包含多个条目的JSON
文件,每个条目都有一个标题和若干内容。
为了便于后续处理或使用这些数据,你可能需要将每个条目的内容分割并保存为单独的文本文件。
应用场景
场景: 文档分割与分类
假设你正在处理一个JSON
文件,里面包含了多个报告或文章的条目,每个条目有一个标题和不同的内容部分。
为了更好地管理这些内容,你需要将它们分割成独立的文本文件。
通过这种方式,你可以更容易地分类、编辑或分享这些文档。
解决方案
通过编写一个简单的Python脚本,你可以自动化这一过程。
脚本会读取JSON
文件中的每个条目,并使用标题作为文件名,将内容字段分别保存到独立的txt
文件中。
这不仅节省了时间,还避免了手动分割文件可能带来的错误。
实现代码
以下是实现这一过程的Python脚本示例:
import os
import json
import time
# 开始计时
start_time = time.time()
# 读取文件路径和目标目录路径
json_file_path = r"D:\data\data.json"
output_dir = r"D:\data\jsontotxt"
# 确保目标目录存在
os.makedirs(output_dir, exist_ok=True)
# 读取JSON数据
with open(json_file_path, 'r', encoding='utf-8') as file:
data = json.load(file)
# 记录生成的txt文件数量
file_count = 0
# 处理JSON数据
for item in data:
# 检查标题是否存在且有值
if "标题" in item and item["标题"]:
# 使用标题作为基础文件名(去除非法字符)
base_file_name = f"{item['标题']}".replace(":", "").replace("/", "_").replace("\\", "_").replace("*", "_").replace("?", "_").replace("\"", "_").replace("<", "_").replace(">", "_").replace("|", "_")
# 遍历内容1到内容n,并保存到单独的txt文件
for i in range(1, len(item)):
content_key = f"内容{i}"
# 检查内容键是否存在且有值
if content_key in item and item[content_key]:
# 构建文件路径和名称
file_name = f"{base_file_name}_{i}.txt"
file_path = os.path.join(output_dir, file_name)
# 写入内容到txt文件
with open(file_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(item[content_key])
file_count += 1
# 删除原始data.json文件
os.remove(json_file_path)
# 计算耗时
end_time = time.time()
elapsed_time = end_time - start_time
# 输出结果
print(f"分离了{file_count}个txt文件,耗时{elapsed_time:.2f}秒。")
这个脚本可以有效地帮助你将一个大型JSON
文件中的多个条目分割并保存为独立的文本文件。
这对于文档管理、数据分类以及后续的数据处理都非常实用。
通过自动化处理,你可以大大提高工作效率,避免手动操作带来的误差。
发表回复