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: James
	last: McIntyre
dates:
	birth: 1828-05-25
	death: 1906-03-31
details:
	bearded: true
	themes: [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 grain
			And you behold on every field Of grass and roots abundant yield,
			But after all the greatest charm
			
			Is 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
# 将数据转化为DataFrame格式
dataframe = pd.DataFrame(data)
# 写入本地excel文件
dataframe.to_excel("/home/text.xlsx" , sheet_name="data", na_rep="na_test",header=0)
posted @ 2023-08-29 01:38  我爱这世间美貌女子  阅读(94)  评论(0编辑  收藏  举报