写在前面:
常见的机器可读格式包括:逗号分割值(CSV)、JavaScript对象符号(json)、可扩展标记语言(xml)
1.CSV数据
还有一个TSV数据类型,数据列之间的分隔符是制表符不是逗号,作用和CSV文件相同,解析数据的时候可以参照CSV文件的解析方式
数据读取的代码:
import csv
csvfile=open("G:\\桌面文件夹\\下载\\csv样本文件\\xh.csv","r")
#第一种打开方式:
#打开csv文件,以列表格式打开,每一行都是一个列表
#reader=csv.reader(csvfile)
#第二种打开方式:
#以字典格式打开,第一行为列,其余的都对应为各个键的值
reader=csv.DictReader(csvfile)
for x in reader:
print(x)
pass
2 JSON数据
扩展名为.json;每一条数据记录很像一个Python字典,每行都有键和值,用冒号分割,数据条目之间用逗号分割,首尾还有花括号围,最外层还有一个中括号把所有的数据条目包裹。形如:[{键1:值1,键2:值2},{键1:值1,键2:值2},{键1:值1,键2:值2}]
数据读取的代码:
import json
import pprint
'''
打开文件,json_data是json文件中的原始内容,即[{},{}]这种格式的内容
json.loads(json_data):将json原始内容加载,此时是去掉的[]的数据
循环遍历json数据中的每一个字典
'''
json_data=open("G:\\桌面文件夹\\ME的\\now\\data-text.json").read()
data=json.loads(json_data)
for x in data:
pprint.pprint(x)
pass
3 XML数据
文件名是.xml是xml数据。此外,如果扩展名是.html或者.xhtml有时也可以用xml解析器来解析。
常用的语法:
- 导入解析xml的库:from xml.etree import ElementTree as ET
- 获取根节点:tree.getroot()
- 获取节点的属性:节点对象.attrib
- 获取指定节点的属性的值:节点对象.attrib[‘属性名称’]
数据读取的代码:
from xml.etree import ElementTree as ET
import pprint
tree = ET.parse("G:\\桌面文件夹\\ME的\\now\\data-text.xml")
root = tree.getroot()
data = root.find('Data')
all_data = []
for observation in data:
for item in observation:
record = {}
pprint.pprint(list(item.attrib)[0])
lookup_key = list(item.attrib)[0]
if lookup_key == 'Numeric':
rec_key = 'NUMERIC'
#记录Numeric属性的值
rec_value = item.attrib['Numeric']
record[rec_key] = rec_value
else:
rec_key = lookup_key
# 记录Code属性的值
rec_value = item.attrib['Category']
record[rec_key] = rec_value
all_data.append(record)
pprint.pprint(all_data)
注意:
上面代码功能比较呆板,不建议套用,最好还是学习一下xml结构,和相关的解析xml操作,自己编写解析xml的程序