python的XML及json解析

最近有个项目需要用到微信公众号,对web一无所知的我选择了python这个上手容易的语言,我想除了这个反人类的强制缩进让自己不适应外其余都很厉害,很方便。
在用到微信公众号的过程中,最多的就是xml与json这两种解析。把用的心得记下来。

XML解析

只介绍etree的方式进行解析

加上这句话from lxml import etree

一个简单的例子:
reply_text.xml

$def with (toUser,fromUser,createTime,content)
<xml>
<ToUserName><![CDATA[$toUser]]></ToUserName>
<FromUserName><![CDATA[$fromUser]]></FromUserName>
<CreateTime>$createTime</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content>$content</Content>
</xml>

用户发送消息给微信公众号后,微信服务器会将该用户的消息以XML形式封装并返回给开发者的服务器。在此过程中开发者可以对获取的XML数据进行处理。

解析的代码:

def POST(self):        
    str_xml = web.data() #获得post来的数据
    xml = etree.fromstring(str_xml)#进行XML解析
    content=xml.find("Content").text#获得用户所输入的内容
    msgType=xml.find("MsgType").text
    fromUser=xml.find("FromUserName").text
    toUser=xml.find("ToUserName").text
    return self.render.reply_text(fromUser,toUser,int(time.time()),content)

通过这几行代码把值进行处理并返回给reply_text.xml这个文件,这样就POST出去,用户会收到发出的文字。

json解析

解析之前别忘了这个:
import json
一个网上的例子,很好理解。
先看一个简单的豆瓣的图书查询的api返回

http://api.douban.com/v2/book/isbn/9787218087351

这里面的json格式如下:

{
rating: {
    max: 10,
    numRaters: 79,
    average: "9.1",
    min: 0
},
subtitle: "",
author: [
    "野夫"
],
pubdate: "2013-9",
tags: [
    {
    count: 313,
    name: "野夫",
    title: "野夫"
    },
    {
    count: 151,
    name: "散文随笔",
    title: "散文随笔"
    },
    {
    count: 83,
    name: "身边的江湖",
    title: "身边的江湖"
    },
    {
    count: 82,
    name: "土家野夫",
    title: "土家野夫"
    },
    {
    count: 70,
    name: "散文",
    title: "散文"
    },
    {
    count: 44,
    name: "中国文学",
    title: "中国文学"
    },
    {
    count: 43,
    name: "随笔",
    title: "随笔"
    },
    {
    count: 38,
    name: "中国现当代文学",
    title: "中国现当代文学"
    }
],
origin_title: "",
image: "http://img5.douban.com/mpic/s27008269.jpg",
binding: "",
translator: [ ],
catalog: "自序 让记忆抵抗 001 掌瓢黎爷 024 遗民老谭 039 乱世游击:表哥的故事 058 绑赴刑场的青春 076 风住尘香花已尽 083 “酷客”李斯 100 散材毛喻原 113 颓世华筵忆黄门 122 球球外传: 一个时代和一只小狗的际遇 141 童年的恐惧与仇恨 151 残忍教育 167 湖山一梦系平生 174 香格里拉散记 208 民国屐痕",
pages: "256",
images: {
    small: "http://img5.douban.com/spic/s27008269.jpg",
    large: "http://img5.douban.com/lpic/s27008269.jpg",
    medium: "http://img5.douban.com/mpic/s27008269.jpg"
},
alt: "http://book.douban.com/subject/25639223/",
id: "25639223",
publisher: "广东人民出版社",
isbn10: "7218087353",
isbn13: "9787218087351",
title: "身边的江湖",
url: "http://api.douban.com/v2/book/25639223",
alt_title: "",
author_intro: "郑世平,笔名野夫,网名土家野夫。毕业于武汉大学,曾当过警察、囚徒、书商。曾出版历史小说《父亲的战争》、散文集《江上的母亲》(获台北2010国际书展非虚构类图书大奖,是该奖项第一个大陆得主)、散文集《乡关何处》(被新浪网、凤凰网、新华网分别评为2012年年度好书)。",
summary: "1.野夫书稿中被删减最少,最能体现作者观点、情感的作品。 2.文字凝练,具有极强的感染力。以一枝孤笔书写那些就在你我身边的大历史背景下普通人的生活变迁。 3. 柴静口中“一半像警察,一半像土匪”的野夫,以其特有的韵律表达世间的欢笑和悲苦。",
price: "32元"
}

如果我们想要rating,images里的large和summary

import urllib2
import json

html = urllib2.urlopen(r'http://api.douban.com/v2/book/isbn/9787218087351')

hjson = json.loads(html.read())

print hjson['rating']
print hjson['images']['large']
print hjson['summary']

只需要这几句就可以解析json,很简单。

### 回答1: Python数据解析JSONXML是指使用Python编程语言解析JSONXML格式的数据。其中JSON是一种轻量级的数据交换格式,常用于Web应用程序中的数据传递;XML是一种标记语言,可用于数据存储和传输。使用Python的内置库或第三方库,可以对JSONXML数据进行解析和处理。 ### 回答2: Python是一种流行的脚本语言,它被广泛用于数据解析和处理,包括解析jsonxml格式的数据。JSON是JavaScript对象表示法,一个轻量级的数据交换格式。XML是可扩展标记语言,也是一种常用的数据交换格式。在Python中,解析jsonxml数据的方法略有不同。 1. 解析JSON数据 Python内置了一个json模块,可以轻松地解析JSON数据。该模块包含两个主要函数,load()和loads()。load()函数将JSON数据从文件读取并解析Python对象,而loads()函数则将JSON字符串解析Python对象。例如,以下是解析JSON数据的样例代码: import json # 从文件中加载JSON数据 with open('data.json') as f: data = json.load(f) # 解析JSON字符串 json_str = '{"name": "John", "age": 30, "city": "New York"}' data = json.loads(json_str) 在上面的代码中,我们使用了json.load()函数从文件中加载JSON数据,并使用json.loads()函数将JSON字符串解析Python对象。 2. 解析XML数据 Python中的XML解析器包括xml.dom和xml.sax。使用xml.dom可以将整个XML文档解析为一个DOM对象树,而使用xml.sax则将解析器分离为一个解析器、一个文档和一个事件处理程序。以下是使用xml.dom解析XML数据的示例代码: import xml.dom.minidom # 从文件中加载XML数据 dom = xml.dom.minidom.parse('data.xml') # 获取根元素对象 root = dom.documentElement # 获取所有子元素 items = root.getElementsByTagName('item') # 遍历子元素 for item in items: id = item.getAttribute('id') name = item.getElementsByTagName('name')[0].childNodes[0].nodeValue desc = item.getElementsByTagName('description')[0].childNodes[0].nodeValue price = item.getElementsByTagName('price')[0].childNodes[0].nodeValue print(id, name, desc, price) 在上面的代码中,我们使用xml.dom.minidom模块解析XML数据,可以使用document对象获取根元素对象,然后使用getElementsByTagName()方法获取所有具有相同名称的元素,从而遍历XML数据并提取所需的数据。 总之,Python提供了许多工具和库,可帮助您轻松地解析JSONXML格式的数据。根据您的需求,可以选择使用jsonxml解析器来处理数据。 无论您选择哪个解析器,都可以使用Python来轻松地解析和处理数据。 ### 回答3: Python是一种流行的编程语言,适用于各种用途,包括数据解析。在Python中,JSONXML是两种最常用的数据交换格式。虽然这两种格式都用于将数据从一个应用程序传递到另一个应用程序,但它们具有不同的语法。 JSON(JavaScript Object Notation)是一种轻量级数据格式,易于阅读和编写,在Web开发中尤其受欢迎。它使用键值对来表示数据,值可以是数字、字符串、布尔值、列表、对象或null。在Python中,可以使用json模块来解析JSON数据。json模块提供了许多函数来读取和写入JSON数据,包括loads()和dumps()函数。loads()函数允许将JSON字符串转换为Python对象,而dumps()函数允许将Python对象转换为JSON字符串。 XML(扩展标记语言)是一种用于传输和存储数据的标记语言,在Web服务、B2B通信和数据库管理等领域中广泛使用。与JSON不同,XML使用标签来表示数据。标签包含元素的名称和值,通常嵌套在其他元素中。在Python中,可以使用xml.etree.ElementTree模块来解析XML数据。xml.etree.ElementTree模块提供了ElementTree类,允许创建XML树,还有一些有用的函数,例如find()、iter()和parse(),用于搜索和解析XML树。 无论您使用JSON还是XMLPython都提供了功能强大的工具来解析和处理数据。选择哪种格式取决于您的应用程序的需求和数据的性质。如果数据是简单的键值对,JSON可能是一个更好的选择,而如果数据是复杂的、嵌套式结构,或者需要包含元数据,XML可能更适合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值