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

news2025/2/26 22:54:45

文章目录

  • 前言
  • 一、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: PyCharm


import json


def 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: PyCharm

import json


def 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)}")
                continue

            key = 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.coloradmin.cn/o/2306585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MybatisPlus-扩展功能-枚举处理器

在Mybatis里有一个叫TypeHandler的类型处理器,我们常见的PO当中的这些成员变量的数据类型,它都有对应的处理器,因此它就能自动实现这些Java数据类型与数据库类型的相互转换。 它里面还有一个叫EnumOrdinalTypeHandler的枚举处理器&#xff0…

力扣2454. 下一个更大元素 IV

力扣2454. 下一个更大元素 IV 题目 题目解析及思路 题目要求对于每个数&#xff0c;找到右边比它大的第二个数&#xff0c;并记录在ans数组中 如果是右边第一个大的&#xff0c;就用一个递减栈即可&#xff0c;栈顶元素如果<当前元素则弹出 第二个大数就要利用弹出的栈顶…

unity学习51:所有UI的父物体:canvas画布

目录 1 下载资源 1.1 在window / Asset store下下载一套免费的UI资源 1.2 下载&#xff0c;导入import 1.3 导入后在 project / Asset下面可以看到 2 画布canvas&#xff0c;UI的父物体 2.1 创建canvas 2.1.1 画布的下面是 event system是UI相关的事件系统 2.2 canvas…

Ollama部署与常用命令

Ollama是一款开源工具&#xff0c;其目标是简化大语言模型在本地环境的部署和使用。它支持多种流行的开源大语言模型&#xff0c;如 Llama 2、Qwen2.5等。 通过Ollama&#xff0c;用户无需具备深厚的技术背景&#xff0c;就能在普通的消费级硬件上快速搭建一个强大的语言处理环…

Visual Studio Code 远程开发方法

方法1 共享屏幕远程控制&#xff0c;如 to desk, 向日葵 &#xff0c;像素太差&#xff0c;放弃 方法2 内网穿透 ssh 第二个方法又很麻烦&#xff0c;尤其是对于 windows 电脑&#xff0c;要使用 ssh 还需要额外安装杂七杂八的东西&#xff1b;并且内网穿透服务提供商提供的…

C语言预编译

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一、预处理的作用与流程&#xf…

汽车智能制造企业数字化转型SAP解决方案总结

一、项目实施概述 项目阶段划分&#xff1a; 蓝图设计阶段主数据管理方案各模块蓝图设计方案下一阶段工作计划 关键里程碑&#xff1a; 2022年6月6日&#xff1a;项目启动会2022年12月1日&#xff1a;系统上线 二、总体目标 通过SAP实施&#xff0c;构建研产供销协同、业财一…

flowable-ui 的会签功能实现

场景&#xff1a;在进行智慧保时通开发时&#xff0c;有个协作合同入围功能&#xff0c;这个功能的流程图里有个评审小组&#xff0c;这个评审小组就需要进行会签操作&#xff0c;会签完成后&#xff0c;需要依据是否有不通过的情况选择下一步走的流程 思考步骤&#xff1a; 首…

大连指令数据集的创建--数据收集与预处理_02

1.去哪儿爬虫 编程语言&#xff1a;Python爬虫框架&#xff1a;Selenium&#xff08;用于浏览器自动化&#xff09;解析库&#xff1a;BeautifulSoup&#xff08;用于解析HTML&#xff09; 2.爬虫策略 目标网站&#xff1a;去哪儿&#xff08;https://travel.qunar.com/trav…

STM32MP157A-FSMP1A单片机移植Linux系统SPI总线驱动

SPI总线驱动整体上与I2C总线驱动类型&#xff0c;差别主要在设备树和数据传输上&#xff0c;由于SPI是由4根线实现主从机的通信&#xff0c;在设备树上配置时需要对SPI进行设置。 原理图可知&#xff0c;数码管使用的SPI4对应了单片机上的PE11-->SPI4-NSS,PE12-->SPI4-S…

java医院多维度综合绩效考核源码,医院绩效管理系统,支持一键核算和批量操作,设有审核机制,允许数据修正

医院绩效考核管理系统&#xff0c;java医院绩效核算系统源码&#xff0c;采用多维度综合绩效考核的形式&#xff0c;针对院内实际情况分别对工作量、KPI指标、科研、教学、管理等进行全面考核。医院可结合实际需求&#xff0c;对考核方案中各维度进行灵活配置&#xff0c;对各维…

C语言学习笔记-初阶(13)scanf介绍

当我们有了变量&#xff0c;我们需要给变量输入值就可以使用 scanf 函数&#xff0c;如果需要将变量的值输出在屏幕上的时候可以使用 printf 函数&#xff0c;下面看⼀个例子&#xff1a; #include <stdio.h> int main() {int score 0;printf("请输⼊成绩:")…

如何让传统制造企业从0到1实现数字化突破?

随着全球制造业不断向智能化、数字化转型&#xff0c;传统制造企业面临着前所未有的机遇与挑战。数字化转型不仅是技术的革新&#xff0c;更是管理、文化、业务流程等全方位的变革。从零开始&#xff0c;如何带领一家传统制造企业走向数字化突破&#xff0c;是许多企业领导者面…

【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取

【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取 一、问题背景 政府的icp备案时&#xff0c;或者某些三方SDK以来的管理后台&#xff0c;都需要配置鸿蒙应用的公钥和证书MD5指纹 二、解决方案 专有名词解释&#xff1a; 华为AppGallery Connect简称 AGC平台&#xff0…

【原创工具】同文件夹PDF文件合并 By怜渠客

【原创工具】同文件夹PDF文件合并 By怜渠客 原贴&#xff1a;可批量合并多个文件夹内的pdf工具 - 吾爱破解 - 52pojie.cn 他这个存在一些问题&#xff0c;并非是软件内自主实现的PDF合并&#xff0c;而是调用的pdftk这一工具&#xff0c;但楼主并没有提供pdftk&#xff0c;而…

【红队利器】单文件一键结束火绒6.0

关于我们 4SecNet 团队专注于网络安全攻防研究&#xff0c;目前团队成员分布在国内多家顶级安全厂商的核心部门&#xff0c;包括安全研究领域、攻防实验室等&#xff0c;汇聚了行业内的顶尖技术力量。团队在病毒木马逆向分析、APT 追踪、破解技术、漏洞分析、红队工具开发等多个…

Linux中文件目录类指令

1、pwd指令 基本语法&#xff1a;pwd 功能&#xff1a;显示当前工作目录的绝对路径 1.相对路径访问和绝对路径访问 当前处于home目录下&#xff0c;访问a.txt文件 相对路径访问&#xff1a;kim/better/a.txt&#xff0c;从当前位置开始定位 绝对路径访问&#xff1a;/home…

开源模型应用落地-LangChain实用小技巧-获取token消耗(五)

一、前言 在当今的自然语言处理领域&#xff0c;LangChain 框架因其强大的功能和灵活性而备受关注。掌握一些实用的小技巧&#xff0c;能够让您在使用 LangChain 框架时更加得心应手&#xff0c;从而更高效地开发出优质的自然语言处理应用。 计算 Token 消耗对有效管理和优化语…

LangChain大模型应用开发:LangGraph快速构建Agent工作流应用

介绍 大家好&#xff0c;博主又来给大家分享知识了。今天给大家分享的内容是使用LangChain进行大规模应用开发中的LangGraph快速构建Agent工作流应用。 通过对前几次对LangChain的技术分享。我们知道LangChain作为一个强大的工具集&#xff0c;为开发者们提供了丰富的资源和便…

鸿蒙Next-方法装饰器以及防抖方法注解实现

以下是关于 鸿蒙Next&#xff08;HarmonyOS NEXT&#xff09;中 MethodDecorator 的详细介绍及使用指南&#xff0c;结合了多个技术来源的实践总结&#xff1a; 一、MethodDecorator 的概念与作用 MethodDecorator 是鸿蒙Next框架中用于装饰类方法的装饰器&#xff0c;属于 Ark…