Python数据处理:CSV、JSON、XML文件的处理

Python数据处理:CSV、JSON、XML文件的处理

  • 常见的机器可读格式包括:

    • 逗号分隔符(Comma-Separated Values,CSV)

    • JavaScript对象符号(JavaScript Object Notation,JSON)

    • 可扩展标记语言(Extensible Markup Language,XML)


1.CSV数据的读取

如果文件扩展名是.tsv,那么里面包含的很可能是TSV数据。如果文件的扩展名是.csv,那么里面包含的可能是CSV数据,也可能是TSV数据。

import csv

#第一个参数为CSV文件地址,第二个参数表示只读方式,返回的是一个文件对象
csvfile = open('data-text.csv', 'r') 
# 以字典的形式读取文件,当csv.reader时以列表形式查看数据
reader = csv.DictReader(csvfile)

# 逐行打印
for row in reader:
    print(row)

运行结果:
在这里插入图片描述

2.JSON数据的读取

如果文件扩展名是.json,则里面包含的可能是JSON数据。如果文件扩展名是.js,则可能是JavaScript文件,在少数情况下也可能是命名不规范的JSON文件。

import json

#JSON文件地址,read方法读取文件保存在json_data变量中,得到的是一个字符串
json_data = open('data-text.json').read()
# 载入json数据到data变量
data = json.loads(json_data)

# 遍历打印
for item in data:
    print(item)

运行结果:
在这里插入图片描述

注意:Python的json库与csv库处理输入数据的方式不同,json库的loads函数接受字符串作为参数,不接收文件最为参数。csv库的reader函数接收打开的文件作为参数。

3.XML数据的读取

如果文件扩展名是.xml,那么它是XML数据。如果文件扩展名是.html或.xhtml,有时也可用XLM解析器来解析。XML用标签和属性来保存数据,类似于JSON中的键。

# 导入解析XML文件的内置库(还可以用lxml库或minidom库)
from xml.etree import ElementTree as ET

# parse方法对文件数据进行解析并返回一个Python对象保存在tree变量中。
tree = ET.parse('data-text.xml')
# 调用getroot函数获取树的根元素
root = tree.getroot()
# print(dir(root)) 查看root对象有哪些方法
# print(list(root))#查看根元素的子元素,返回一个有Element对象构成的列表

# find方法利用标签名来搜索子元素
data = root.find('Data')

all_data = []#保存数据的空列表

# 每一个observation元素代表一行数据
for observation in data:
    record = {}#保存数据的空字典
    for item in observation:
        # print(item)
        # attrib可以返回每一个节点的属性
        lookup_key = list(item.attrib.keys())[0]

        if lookup_key == 'Numeric':
            rec_key = 'NUMERIC'
            rec_value = item.attrib['Numeric']
        else:
            rec_key = item.attrib[lookup_key]
            rec_value = item.attrib['Code']

        record[rec_key] = rec_value#将每一个键值对添加到record字典中

    all_data.append(record)#将每一条数据记录添加到all_data列表中

print(all_data)

运行结果:
在这里插入图片描述
注意:不同的XML树结构具有不同的数据提取过程。

小结:

文件类型 文件扩展名 Python库
CSV、TSV .csv、.tsv csv库
JSON .json、.js json库

参考文献:
《data wrangling with Python》Jacqueline kazil
示例文件:
链接:https://cloud.189.cn/t/AVNZRrfmiAZj
访问码:0963

猜你喜欢

转载自blog.csdn.net/weixin_41792682/article/details/89428105