当前位置: 首页 > news >正文

【python随手记】——读取文本文件内容转换为json格式

文章目录

  • 前言
  • 一、TXT文件转换为JSON数组
    • 1.txt文件内容
    • 2.python代码
    • 3.输出结果
  • 二、TXT文件转换为JSON对象
    • 1.txt文件
    • 2.python代码
    • 3.输出结果


前言

场景:用于读取包含空格分隔数据的TXT文件,并将其转换为结构化JSON文件


一、TXT文件转换为JSON数组

1.txt文件内容

地点A 116.405285 39.904989 43.5
地标B 121.473701 31.230416 4.2
观测点C 113.264385 23.129112 12.8

2.python代码

# -*- coding:utf-8 -*-
# @Time: 2025-02-25 20:25
# @Author: 番茄君
# @File:06-txt转换JSON数组.py
# @Software: PyCharmimport jsondef txt_to_json(input_file, output_file):"""将TXT文件转换为JSON格式:param input_file: 输入文件路径(如input.txt):param output_file: 输出文件路径(如output.json)"""# 定义一个列表data_list = []# 读取文件并逐行处理with open(input_file, 'r', encoding='utf-8') as f:for line in f:# 去除首尾空白字符并按空格分割parts = line.strip().split(" ")# 验证数据格式(需包含至少4列)if len(parts) >= 4:attribute = parts[0]try:# 提取经度、纬度、高度并转换为浮点数longitude = float(parts[1])latitude = float(parts[2])height = float(parts[3])# 构建JSON对象data = {"属性名": attribute,"经度": longitude,"纬度": latitude,"高度": height}data_list.append(data)except ValueError:print(f"数据格式错误,跳过行:{line}")# 生成JSON文件with open(output_file, 'w', encoding='utf-8') as json_f:json.dump(data_list, json_f, ensure_ascii=False, indent=4)

3.输出结果

[{"属性名": "地点A","经度": 116.405285,"纬度": 39.904989,"高度": 43.5},{"属性名": "地标B","经度": 121.473701,"纬度": 31.230416,"高度": 4.2},{"属性名": "观测点C","经度": 113.264385,"纬度": 23.129112,"高度": 12.8}
]

二、TXT文件转换为JSON对象

1.txt文件

地点A 116.405285 39.904989 43.5
地标B 121.473701 31.230416 4.2
观测点C 113.264385 23.129112 12.8

2.python代码

# -*- coding:utf-8 -*-
# @Time: 2025-02-25 16:15
# @Author: 番茄君
# @File:05-txt转换为json对象.py
# @Software: PyCharmimport jsondef txt_to_json(input_file, output_file):"""将TXT文件转换为嵌套JSON格式:param input_file: 输入文件路径(如input.txt):param output_file: 输出文件路径(如output.json)"""# 定义一个字典result = {}with open(input_file, 'r', encoding='utf-8') as f:for line_num, line in enumerate(f, 1):# 清理数据并分割列cleaned_line = line.strip()# print(line_num,line,cleaned_line)if not cleaned_line:continue  # 跳过空行columns = cleaned_line.split()# 验证数据格式if len(columns) != 4:print(f"第{line_num}行格式错误,需要4列数据,实际列数:{len(columns)}")continuekey = columns[0]try:# 提取并转换坐标数据coordinates = {"经度": float(columns[1]),"维度": float(columns[2]),"高度": float(columns[3])}except ValueError as e:print(f"第{line_num}行数值格式错误:{e}")continue# 检查重复键if key in result:print(f"警告:键名'{key}'重复(第{line_num}行)")result[key] = coordinates# 生成JSON文件with open(output_file, 'w', encoding='utf-8') as json_file:json.dump(result, json_file, ensure_ascii=False, indent=2)# 使用示例
txt_to_json('input.txt', 'output.json')

3.输出结果

{"地点A": {"经度": 116.405285,"维度": 39.904989,"高度": 43.5},"地标B": {"经度": 121.473701,"维度": 31.230416,"高度": 4.2},"观测点C": {"经度": 113.264385,"维度": 23.129112,"高度": 12.8}
}

http://www.lryc.cn/news/542916.html

相关文章:

  • k8s集群3主5从高可用架构(kubeadm方式安装k8s)
  • 基于 sklearn 的均值偏移聚类算法的应用
  • 三、大模型微调的多种方法与应用场景
  • 第2课 树莓派镜像的烧录
  • SQL之order by盲注
  • AI大模型(四)基于Deepseek本地部署实现模型定制与调教
  • java后端开发day19--学生管理系统升级
  • MFC文件和注册表的操作
  • vscode如何使用鼠标滚轮调整字体大小
  • C++之vector和list辨析
  • 冯诺依曼体系结构 ──── linux第8课
  • EX_25/2/22
  • rust安装教程以及git连接到远程仓库
  • Kafka系列之:记录一次源头数据库刷数据,造成数据丢失的原因
  • VC++零基础入门之系列教程 【附录E MFC快速参考指南】
  • 在CentOS 7下部署NFS的详细教程
  • LabVIEW C编译支持工具库CCompileSupp.llb
  • 【含文档+PPT+源码】基于微信小程序的农产品自主供销商城系统
  • MongoDB私人学习笔记
  • C++---了解STL
  • 智能自动化新纪元:AI与UiPath RPA的协同应用场景与技术实践
  • 2025年2月科技热点深度解析:AI竞赛、量子突破与开源革命
  • 计算机网络————(三)
  • 请谈谈 React 中的状态管理,如何使用 Context API 和 Redux 进行状态管理?
  • 【考研】复试相关上机题目
  • 利用机器学习实现实时交易欺诈检测
  • Modelfile配置说明
  • labview实现有符号位16进制转二进制补码转真值
  • 浏览器深度解析:打造极速、安全、个性化的上网新体验
  • JavaScript 简单类型与复杂类型-堆和栈