关于 Python 解码的求教,我应该怎么修改?万分感谢

2016-01-12 22:32:58 +08:00
 mnsw

想写一个用 Python 来抽取 xml 文件中的一些数据并转码
xml 如下

<?xml version="1.0" encoding="utf-8"?>
<config>
<HTTP>
<SITE NAME="HUNLIAN" DESCRIPTION="%E5%A9%9A%E6%81%8B" >
</SITE>
<SITE NAME="jiaoyou" DESCRIPTION="%E5%A9%9AB" >
</SITE>
</HTTP>
</config>

Python 如下
```
#!/usr/bin/python
#--coding:utf-8--

from xml.dom.minidom import parse 
import xml.dom.minidom 
import urllib   

DOMTree = xml.dom.minidom.parse("xff.xml")  
Data = DOMTree.documentElement

Sites = Data.getElementsByTagName("SITE")

for site in Sites:
    L = "name: %s " %site.getAttribute("NAME")
    M = "desc: %s" %site.getAttribute("DESCRIPTION")

    url = urllib.unquote(M[0])
    print L,M

    f = open("info.txt", "a")
    f.write(L+'\n'+M+'\n'+url+'\n')
    f.close
结果如下:
name: HUNLIAN 
desc: %E5%A9%9A%E6%81%8B
M(0)
name: jiaoyou 
desc: %E5%A9%9AB
M(0)
实际想要的是 M(0)应该是 desc 的 URL 解码
2015 次点击
所在节点    Python
5 条回复
zhyu
2016-01-12 22:36:23 +08:00
```python

>>> import urllib
>>> print urllib.unquote('%E5%A9%9A%E6%81%8B').decode('utf8')
婚恋

```
mnsw
2016-01-12 22:41:01 +08:00
@zhyu 把 decode 添加到程序中,结果是
name: HUNLIAN
desc: %E5%A9%9A%E6%81%8B
d
name: jiaoyou
desc: %E5%A9%9AB
d
zhyu
2016-01-12 23:08:18 +08:00
@mnsw xml parse 的问题
M = "desc: %s" % site.getAttribute("DESCRIPTION").encode('utf-8')

换成 ElementTree 比较好
mnsw
2016-01-13 16:00:09 +08:00
@zhyu 现在是用 DOM 解析的
zhyu
2016-01-13 21:16:26 +08:00
@zhyu 看程序就知道你用 dom 解析了… dom 的解决方法我都写了
只是建议不用 dom 而已

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/250280

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX