python数据处理2----供机器读取的数据

一、常见的机器可读格式:

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输出
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值