一、常见的机器可读格式:
1.逗号分离值(Comma-Separated Values,CSV)
2.Javascript对象符号(Javascript Object Notation,JSON)
3.可扩展标记语言(eXtensible Markup Language,XML)
二、CSV数据
是指将数据以逗号分隔的文件,文件扩展名为.csv
与此对应的有TSV数据,与CSV不同的是数据之间分隔符是制表符Tab,扩展名为.tsv
1、导入CSV
写一个csv文件:
1)打开记事本,写入一些词组并以逗号分隔:
例:name,age,password,address
小明,18,123456,北京
2)将文件命名为:data-text.csv
import csv #导入CSV库
csvfile = open('data-text.csv','rb') #将名为data-text.csv文件传入open函数,rb的意思是以只读的方式和二进制方式打开
reader = csv.reader(csvfile) #将csvfile 传递给csv文件的reader函数,将csv模块将打开的文件当作CSV来读取
for row in reader: #用for来遍历reader中的内容
print row#将结果打印每行的数据
2、将代码保存到文件中并在命令行中运行
1)在NotePad++中写入一下代码:
import csv
csvfile=open('data-test.csv','rb')
reader=csv.reader(csvfile)
for row in reader:
print(row)
2)将代码保存为:import_csv.data.py
3)将命令行盘符切换到桌面
4)输入:python import_csv_data.py
三、JSON数据
1.新建JSON文件
1)打开记事本
2)写入以下内容:
[
{
"Indicator":Life expectancy at birth (years)",
"PUBLISH STATES":"Published",
"Year":1990,
"WHO region":"Europe",
"World Bank income group":"High-income",
"Country":"Andorra",
"Sex":"Both sexes",
"Display Value":77,
"Numeric":77.00000,
"Low":"",
"High":"",
"Comments":""
}
]
3)将文件保存为:data-test.json
2.导入json数据:
1)打开NotePad++,写入以下代码:
import json
json_data=open('data-test.json').read()
data=json.loads(json_data)
for item in data:
print(item)
四、XML数据
1.新建XML文件
1)打开记事本,写入以下内容:
<GHO ...>
<Data>
<Observation FactID="4543040" Published="true"
Dataset="CYCU"EffectiveDate="2014-03-27 EndData="2900-12-31">
<Dim Category="COUNTRY" Code="SOM"/>
<Dim Category="REGION" Code="EMR"/>
<Dim Category="WORLDBANKINCOMEGROUP" Code="WB_LI"/>
<Dim Category="GHO" Code="WHOSIS_000002"/>
<Dim Category="YEAR" Code="2012"/>
<Dim Category="SEX" Code="FMLE"/>
<Dim Category="PUBLISHSTATE" Code="PUBLISHED"/>
<Value Numeric="46.00000">
<Display>46</Display>
</Value>
</Observation>
<Observation FactID="4209598" Published="true"
Dataset="CYCU" EffectiveDate="2014-03-25" EndDate="2900-12-31">
<Dim Category="WORLDBANKINCOMEGROUP" Code="WB_HI"/>
<Dim Category="YEAR" Code="2000"/>
<Dim Category="SEX" Code="BTSX"/>
<Dim Category="COUNTRY" Code="AND"/>
<Dim Category="REGION" Code="EUR"/>
<Dim Category="GHO" Code="WHOSIS_000001"/>
<Dim Category="PUBLISHSTATE" Code="PUBLISHED"/>
<Value Numeric="80.00000">
<Display>80</Display>
</Value>
</Observation>
</Data>
</GHO>
2)将文件保存为:data-text.xml
2.导入XML文件
1)打开NotePad++,写入以下代码:
from xml.etree import ElementTree as ET #导入ElementTree并命名为ET
tree = ET.parse('data-text.xml') #导入data-text.xml'
root=tree.getroot() #调用getroot来获取tree的根元素
data=root.find('Data') #找到根元素中的Data元素
all_data=[] #以列表返回结果
for observation in data: #用observation遍历data
record={}#以字典返回
for item in observation: #用 item遍历observation
lookup_key=item.attrib.keys()[0]#对同时具有Category和Code的元素,用Category作为键,用Code作为值
if look_key == 'Numeric':#当 look_key等于Numeric时,使用Numeric作为新字典的键,使用Numeric为值
rec_key='NUMERIC'
rec_value=item.attrib['Numeric']
else: #当不相等时将lookup_key作为键,Code作为值
rec_key=item.attrib[lookup_key]
rec_value=item.attrib['Code']
record[rec_key]=rec_value
all_data.append(record)#将每一条数据记录用append方法添加到all_data列表中
print (all_data)#将all_data输出