Python——数据交换格式简要

简单数据交换格式

 

CSV:

 

一般用  open()  函数和字符串拆分  split()  方法,但python有内置的csv模块

 

读:

 

import csv

with open(r"C:\User\Jery\Desktop\测试.csv", 'r', encoding='utf-8')as rf:
    r = csv.reader(rf, dialect=csv.excel)
    for row in r:
        print("|".join(row))

 

 写:

 

 

 

 

import csv

with open(r"C:\User\Jery\Desktop\测试.csv", 'r', encoding='utf-8')as rf:
    r = csv.reader(rf, dialect=csv.excel)
    with open(r"C:\User\Jery\Desktop\测试_副本.csv", 'w', encoding='utf-8')as wf:
        w = csv.writer(wf)
        for row in r:
            # print("|".join(row))
            w.writerow(row)

 

参数newline设置为空字符,就是在写入一行数据时不再加换行符,默认writer写入数据是会加换行符。

 

 

XML

XML主要由标签构成,主要分为:

声明:如:<?xml version=”1.0” encoding=”UTF-8”?>

根元素:根元素只有一个

子元素:若为空,写法可以为<node/>

属性:<node id=”1”>

命名空间:<node xmlns:***=”***”>

限定名:特定元素或属性,如<node:body>

 

 

解析:SAX解析和DOM解析:

SAX基于事件驱动,遇到文档标签就会触发相应事件,只能读文档,解析速度快。

DOM基于文档对象,将文档作为树状结构分析,会获取节点内容及属性,一次性将文档读入内存,能够修改文档。

 

eg:

 

 

import xml.etree.ElementTree as ET

tree = ET.parse(r'C:\Users\Jery\Desktop\测试.xml')
root = tree.getroot()
print(type(tree))
print(root.tag)
for index,child in enumerate(root):
    print('第{}个{}元素,属性{}'.format(index,child.tag,child.attrib))
    for i,child_child in enumerate(child):
        print('---标签{},内容{}---'.format(child_child.tag,child_child))

 

 

XPath:

 

 

import requests
from lxml import etree  # 按tab键自动提示

url = ''
res = requests.get(url)
# 把网页变成xpath结构
res_xpath = etree.HTML(res.text)
type(res_xpath)

# /text()提取文字,此处提取是绝对路径
res_xpath.xpath('/html/head/title/text()')

# //提取任意独一无二的子节点,//后面是标签名字
res_xpath.xpath('//a/text()')

# 单引号双引号嵌套使用
res_xpath.xpath('//a[@class=“menu”and @href="category"]/text()')

# 使用[]指定提取第几个,前面用*效率低,全局筛选,最好用更细的标签
res_xpath.xpath('*[id="categoryList"]/li[1]//div[@class="video_title"]/text()')

# 提取属性,提取链接,"."相对路径
for li in res_xpath.xpath('//ul[@id="categoryList"]/li'):
    li.xpath('.//div/a[1]/@href')

# 拼成链接
for li in res_xpath.xpath('//ul[@id="categoryList"]/li'):
    print('http://www.pearvideo.com/'+li.xpath('./div/a/Chref')[0])

 

JSON:

 

Json文档结构:

对象:名称:值 对集合——对应python字典

数组:一连串元素集合——对应python列表/元组

 

解码:

loads()将JSON字符串进行解码,返回python数据

load()读取文件或流,对JSON数据进行解码,返回python数据

 

 

eg:

 

 

 

import json


j = r'{"name":"Jery","sex":"男","age":18,"array":[1,2,3]}'
j_dict = json.loads(j)
print(type(j_dict))
print(j_dict['name'])
print(j_dict['array'])
with open(r'C:\Users\Jery\Desktop\a.json','r',encoding='UTF-8')as f:
    data = json.load(f)
    print(type(data))
    print(data)

 

 

配置文件ini

Windows系统配置文件ini:

 

结构:

节:包括若干个配置项。如:[Startup]

配置项:由键值对构成,默认等号隔开。如:RequireOS = Windows10

注释:单独占一行,默认用分号隔开。如:;Startup节

 

 

配置文件的读取:eg

 

 

import configparser

config = configparser.ConfigParser()  # 创建解析器对象
config.read(r'C:\Users\Jery\Desktop\xml.ini', encoding='gbk')  # 读取并解析,编码格式依文件而定
print(config.sections())  # 返回所有节
print(config.options('desp'))  # 返回desp节下配置项名
print(config['desp']['Pos'])  # desp节下的Pos项值

 

 

配置文件的写入:

 

 

import configparser

config = configparser.ConfigParser()
config.read(r'C:\Users\Jery\Desktop\xml.ini',encoding='gbk')
config['desp']['Newtext'] = 'hello ini'
config.add_section('New_Section') # 添加节
config.set('New_Section','name','Jery') # 添加配置项
with open(r'C:\Users\Jery\Desktop\xml.ini','w')as fw: # 开始写入
    config.write(fw)

 

posted @ 2019-04-14 14:38  铃铃铃  阅读(497)  评论(0编辑  收藏  举报