Python 各种格式文件转换

Python 各种格式文件转换

  • txt文本文件
  • csv文件
  • xml文件
  • html文件
  • json文件
  • yaml文件
  • properties文件
  • ini/cfg文件
  • xml文件

一、CSV

  1. 写入csv文件
import csv
villains = [['Doctor', 'No'],['Rosa', 'Klebb'],['Mister', 'Big'],['Auric', 'Goldfinger'],['Ernst', 'Blofeld']
]
with open('villains', 'wt') as fout:csvout = csv.writer(fout)csvout.writerows(villains)
  1. 读取csv文件
# 读取csv文件
import csv
with open('villains', 'rt') as fin:cin = csv.reader(fin)villains = [row for row in cin]print(villains)
  1. 使用DictWriter指定列名
import csv
villains = [{'first': 'Doctor', 'last': 'No'},{'first': 'Rosa', 'last': 'Klebb'},{'first': 'Mister', 'last': 'Big'},{'first': 'Auric', 'last': 'Goldfinger'},{'first': 'Ernst', 'last': 'Blofeld'}
]
with open('villains.txt', 'wt') as fout:cout = csv.DictWriter(fout, ['first', 'last'])cout.writeheader()cout.writerows(villains)
  1. 使用DictReader指定列名
# 读取csv文件
import csv
with open('villains', 'rt') as fin:cin = csv.DictReader(fin, fieldnames=['first', 'last'])villains = [row for row in cin]print(villains)

二、XML

menu.xml

<?xml version="1.0"?>
<menu><breakfast hours="7-11"><item price="$6.00">breakfast burritos</item><item price="$4.00">pancakes</item></breakfast><lunch hours="11-3"><item price="$5.00">hamburger</item></lunch><dinner hours="3-10"><item price="$8.00">spaghetti</item></dinner>
</menu>

使用标准库ElementTree解析menu.xml

import xml.etree.ElementTree as et
tree = et.ElementTree(file='menu.xml')
root = tree.getroot()
print(root.tag)
for child in root:print('tag:', child.tag, ',attributes', child.attrib)for gradchild in child:print('\ttag:', gradchild.tag, ',attributes:', gradchild.attrib)

xml第三方库

xml.dom:将整个xml载入内存读取。

Xml.sax:动态解析xml,不用一次性载入内存。

三、HTML

使用Flask、Django等Web框架和jinja2等模版渲染引擎向浏览器渲染html文件内容。

四、JSON

python字典转换为json字符串

menu = {"breakfast": {"hours": "7-11","items": {"breakfast burritos": "$6.00","pancakes": "$4.00"}},"lunch": {"hours": "11-3","items": {"hamburger": "$5.00"}},"dinner": {"hours": "3-10","items": {"spaghetti": "$8.00"}}
}import json
menu_json = json.dumps(menu)
print(menu_json)

json字符串转换为python字典

menus = '{"breakfast": {"hours": "7-11", "items": {"breakfast burritos": "$6.00", "pancakes": "$4.00"}}, "lunch": {"hours": "11-3", "items": {"hamburger": "$5.00"}}, "dinner": {"hours": "3-10", "items": {"spaghetti": "$8.00"}}}'
menu2 = json.loads(menus)
print(menu2)

关于datetime类型

import datetime
import json 
now = datetime.datetime.utcnow()
json.dumps(now, default=str)

五、YAML

Python标准库尚未包含yaml相关的库进行操作,需要使用第三方库yaml。

mcintyre.yml

name:first: Jameslast: McIntyre
dates:birth: 1828-05-25death: 1906-03-31
details:bearded: truethemes: [cheese, Canada]
poems:- title: 'Motto'text: |Politeness, perseverance and pluck,To their possessor will bring good luck- title: 'Canadian Charms'text: |Here industry is not in vain,For we hava bounteous crops of grainAnd you behold on every field Of grass and roots abundant yield,But after all the greatest charmIs the snug home upon the farm,And stone walls now keep cattle warm.

加载yaml

import yaml
with open('mcintyre.yaml', 'rt') as fin:text = fin.read()
data = yaml.safe_load(text, Loader=yaml.FullLoader)
print(data)

六、tablib

tablib可以处理CSV、JSON、YAML格式的表格数据,以及Microsoft Excel、Pandas DataFrame等一些其他格式

$ pip install tablib

七、Pandas

Pandas是用于结构化数据的Python库,可作为处理显示数据问题的绝佳工具。

  • 读写多种文本和二进制文件格式

  • CSV格式

  • 固定宽度文本

  • Excel

  • JSON

  • HTML

  • SQL

  • HDF5

  • 其他

  • 分组、分割、合并、索引、切片、排序、选择、标记

  • 转换数据类型

  • 修改大小或塑形

  • 处理丢失的数据

  • 生成随机值

  • 管理时间序列

read函数会返回DataFrame对象,这是Pandas对于二维数据(行和列)的标准表示,在某些方面类似于电子表格或关系数据库表,对于一维数据Pandas使用Series对象表示。

读取csv
import pandas
data = pandas.read_csv('villains.txt')
print(data)

变量data就是一个DataFrame对象,它特别适用于使用NumPy进行繁重的数值运算以及机器学习的数据准备。

八、ini/cfg配置文件

使用标准模块configparser可以处理.ini文件。

settings.cfg

[english]
greeting = Hello
[french]
greeting = Bonjour
[files]
home = /usr/local
bin = %(home)s/bin

读取ini文件

import configparser
cfg = configparser.ConfigParser()
cfg.read('settings.cfg')
print(cfg)

九、Microsoft Excel

用于操作Microsoft Excel的第三方库有xlrd、tablib、python-excel、xlwt、xlutils等。

使用pandas读取Microsoft Excel

import pandas as pd
# 读取本地excel文件
data = pd.read_excel(r"/home/text.xlsx", sheet_name="data", sheet_index = 1, header = 0)

data为Pandas的DataFrame对象。

pandas写入Microsoft Excel

import pandas as pd
data = { 'name': ['zs', 'ls', 'ww'], 'age': [11, 12, 13], 'gender': ['man', 'man', 'woman']}
# 将数据转化为DataFrame格式
dataframe = pd.DataFrame(data)
# 写入本地excel文件
dataframe.to_excel("/home/text.xlsx" , sheet_name="data", na_rep="na_test",header=0)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/57299.shtml

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

相关文章

Zabbix 5.0 媒体介质 邮箱配置例子

QQ企业邮箱 参考&#xff1a;zabbix 腾讯企业邮箱配置图_harveymomo的博客-CSDN博客

Linux下的系统编程——vim/gcc编辑(二)

前言&#xff1a; 在Linux操作系统之中有很多使用的工具&#xff0c;我们可以用vim来进行程序的编写&#xff0c;然后用gcc来生成可执行文件&#xff0c;最终运行程序。下面就让我们一起了解一下vim和gcc吧 目录 一、vim编辑 1.vim的三种工作模式 2.基本操作之跳转字符 &a…

代理模式之静态代理

代理模式是一种常见的设计模式&#xff0c;它允许一个对象&#xff08;代理对象&#xff09;代表另一个对象&#xff08;真实对象&#xff09;进行操作。在软件开发中&#xff0c;代理模式被广泛应用于各种场景&#xff0c;例如网络请求的代理、权限控制的代理等。 静态代理是…

无法正常访问服务器

网络原因&#xff0c;本地网络&#xff1a;解决办法&#xff1a;检查本地网络是否正常&#xff0c;访问外网是否流畅。机房网络&#xff1a;通过路由追踪查看是否中间有 节点不通&#xff0c;确定是线路出现丢包。 远程连接&#xff0c;检查远程连接是否启用以及远程计算机上的…

无涯教程-机器学习 - 箱形图函数

Box和Whisker图(也简称为boxplots)是另一种有用的技术&#xff0c;可用于检查每个属性的分布情况。以下是此技术的特点- 它本质上是单变量的&#xff0c;总结了每个属性的分布。它为中间值(即中位数)画一条线。它将在25&#xff05;和75&#xff05;周围绘制一个框。它还会绘制…

UE4/5在蓝图细节面板中添加函数按钮(蓝图与c++的方法)

目录 在细节面板中添加按钮使用函数 蓝图的方法 事件 函数 效果 uec的方法 效果 在细节面板中添加按钮使用函数 很多时候&#xff0c;我们可以看到一些插件的actor类中&#xff0c;点击一下之后就可以实现如矩阵一样的效果。 实际上是因为其使用了函数来修改了蓝图中的数…

完美解决Ubuntu网络故障,连接异常,IP地址一直显示127.0.0.1

终端输入ifconfig显示虚拟机IP地址为127.0.0.1&#xff0c;具体输出内容如下&#xff1a; wxyubuntu:~$ ifconfig lo: flags73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen …

编程之道:【面向对象编程的实际应用】封装、继承和多态的魔法

编程是一门艺术&#xff0c;而面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;则是这门艺术的重要画笔。在OOP中&#xff0c;封装、继承和多态是三个核心概念&#xff0c;它们的实际应用能够为代码注入魔法&#xff0c;使之更加灵活、可维…

周鸿祎为360智脑招贤纳士;LLM时代的选择指南;Kaggle大语言模型实战;一文带你逛遍LLM全世界 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 思否「齐聚码力」黑客马拉松&#xff0c;用技术代码让生活变得更美好 主页&#xff1a;https://pages.segmentfault.com/google-hacka…

Flutter(十)网络请求和文件

目录 文件操作网络请求1.Dio库2.websocket3.JSON转Dart Model 文件操作 APP目录 Android 和 iOS 的应用存储目录不同&#xff0c;PathProvider (opens new window)插件提供了一种平台透明的方式来访问设备文件系统上的常用位置。该类当前支持访问两个文件系统位置&#xff1a;…

使用vars函数捕获对象属性值

使用vars函数捕获对象属性值 作用 返回一个对象的属性 → \rightarrow →值字典 class Animal:def __init__(self) -> None:self.kind "animal"...class Person(Animal):def __init__(self, name: str, id: str, age: int) -> None:super().__init__()self…

2023Java ——八股文(面试题冲击小测 15w)

这里写目录标题 Java基础篇语法篇JDK、JRE和JVM的关系栈和堆分别存的什么数据异步和同步线程和进程区别java的数据类型有哪些equals和HashCode重写的问题?深拷贝和浅拷贝的区别和equals的区别常见的运行时异常有哪些&#xff1f; 集合集合的形式List和Set的区别ArrayList和Lin…

kubesphere中部署grafana实现dashboard以PDF方式导出

1&#xff0c;部署grafana-image-renderer 2&#xff0c;部署grafana GF_RENDERING_SERVER_URL http://ip:30323/render #grafana-image-renderer地址 GF_RENDERING_CALLBACK_URL http://ip:32403/ #grafana地址 GF_LOG_FILTERS rend…

【ag-grid-vue】列定义(Updating Column Definitions)

列定义一节解释了如何配置列。可以在初始设置列之后更改列的配置。本节介绍如何更新列定义。 添加和删除列 可以通过更新提供给网格的列定义列表来添加和删除列。当设置新列时&#xff0c;网格将与当前列进行比较&#xff0c;并计算出哪些列是旧的(要删除)、哪些列是新的(创建…

BookStack开源免费知识库docker-compose部署

BookStack&#xff08;书栈&#xff09;是一个功能强大且易于使用的开源知识管理平台&#xff0c;适用于个人、团队或企业的文档协作和知识共享。 一、BookStack特点 简单易用&#xff1a;BookStack提供了一个直观的用户界面&#xff0c;使用户能够轻松创建、编辑和组织文档多…

Kali Linux进行移动应用安全测试

使用Kali Linux进行移动应用安全测试是一项关键任务&#xff0c;可以帮助识别和修复移动应用中的安全漏洞。以下是一个基本的步骤指南&#xff0c;展示如何在Kali Linux中进行移动应用安全测试。 步骤&#xff1a; 准备环境&#xff1a; 确保 已经安装了Kali Linux&#xff0c…

Python爬虫追踪新闻事件发展进程及舆论反映

大家好&#xff01;在当今信息爆炸的时代&#xff0c;了解新闻事件的发展进程和舆论反映对于我们保持对时事的敏感度和了解社会动态至关重要。在本文中&#xff0c;我将与你分享使用Python爬虫追踪新闻事件发展进程和舆论反映的方法&#xff0c;帮助你获取及时、全面的新闻信息…

java 基础知识 循环的几个题目

1、输出1~100的累加和 结果显示在屏幕&#xff0c;显示在文件res1.txt中 2、输出1-~100的偶数和 结果显示在屏幕&#xff0c;显示在文件res2.txt中 3、输出所有水仙花数&#xff1a; 100~999的数中出现个位数的立方十位数的立方百位数的立方这个数本身 4、输出由9行9列星号组成…

redis windows 版本安装

1. 下载windows安装包并解压 如果是Linux版本可以直接到官网下载&#xff0c;自3.x起官网和微软网站就没有redis安装包更新了&#xff0c;好在github有开发者在编译发布更新&#xff08;目前最新有5.0.9版本可下&#xff09;&#xff0c;地址&#xff1a;redis windows 5版本下…

【java安全】JNDI注入概述

文章目录 【java安全】JNDI注入概述什么是JNDI&#xff1f;JDNI的结构InitialContext - 上下文Reference - 引用 JNDI注入JNDI & RMI利用版本&#xff1a;JNDI注入使用Reference 【java安全】JNDI注入概述 什么是JNDI&#xff1f; JNDI(Java Naming and Directory Interf…