专栏首页数据云团Python进阶-文本处理-XML数据

Python进阶-文本处理-XML数据

XML 是一个结构化数据格式。

  • 将 Python 字典转换成 XML
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString
Articles = {
  '0001': {
    "title": "Python进阶-GUI-Tk接口",
    "name": "小团子",
    "time": 2019,
    "image": "www.shujuyuntuan.com/static/image/0001.jpg",
  },
  '0002': {
    "title": "Python进阶-Web 服务",
    "name": "数据云团",
    "time": 2018
  },
  '0003': {
    "title": "Python进阶-GUI-目录树",
    "name": "团子",
    "time": 2017,
    "tags": "python"
  },
}

首先创建顶层对象,即 articles,接着将所有其它内容添加到该节点下。对于每一篇文章,都添加一个 article 子节点,如果上面的原字典没有提供封面图和标签,则使用提供的默认值。接着遍历所有键值对,将这些内容作为其它子节点添加到每个 article 中。

articles = Element("articles")
for article_id, info in Articles.items():
  article = SubElement(articles, 'article')
  info.setdefault("image", "www.shujuyuntuan.com/static/image/default.jpg")
  info.setdefault("tags", "python")
  for key, val in info.items():
    SubElement(article, key).text = ", ".join(str(val).split(":"))
xml = tostring(articles)
print("*** XML 数据 ***")
print(xml)

将数据用其它几种格式转储,遍历所有节点作为一个大的平坦结构;在 XML 文档中进行搜索。

dom = parseString(xml)
print(dom.toprettyxml("    "))
for elmt in articles.getiterator():
    print(elmt.tag, '-', elmt.text)
for article in articles.findall('.//title'):
    print(article.text)

本文分享自微信公众号 - 数据云团(SmartData)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 8 个常用的 Python 爬虫技巧,分分钟提高效率!!

    在urllib2包中有ProxyHandler类,通过此类可以设置代理访问网页,如下代码片段:

    昱良
  • 基于maven的项目脚手架,一键创建项目的项目模板

    Springboot的出现极大的简化了项目开发的配置,然而,到真实使用的时候还是会有一堆配置需要设定。比如依赖管理,各种插件,质量扫描配置,docker配置,持...

    Ryan-Miao
  • 使用simple transformation查找xml file内某个节点的attribute是否存在指定value

    下列report实现通过simple transformation查找xml 文件内下列路径的节点ds其attribute uri的值是否等于指定值:

    Jerry Wang
  • 使用TestNG listener实现Case失败重跑功能

    Case失败了,想自动再跑一遍确认到底是不稳定还是真bug? 这可咋整啊? 使用testng的listener

    软测小生
  • Memcached三种客户端的使用

    注:该方式与第一种类似,只是在set方法的时候,传入参数顺序调换。缓存时间需注意,若memcached的服务端装在windows上,可能会出现运行错误。

    一觉睡到小时候
  • SpringCloud之服务调用

    SpringCloud的服务调用有两个东西: Ribbon是一个客户端的负载均衡器,它提供对大量的HTTP和TCP客户端的访问控制。Feign也是用的Ribbo...

    用户3467126
  • 天气API

    网上找了很多的接口很多都是没有pm2.5这个指数。偶然发现了一个带pm指数的接口。拿来试了一下,还不错,在此跟大家分享一下。

    一觉睡到小时候
  • Android获取已连接wifi的热点信息(上位机开发学习之多个界面切换编程)

    在企业级应用产品开发中,通常一个APP都是由多个复杂的页面来构成的。我们将它适当性的扩展为两个界面,其中第一个界面是这样的:

    morixinguan
  • 微信小程序web-view实例

    达达前端
  • Json格式的转换

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML、JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据...

    一觉睡到小时候

扫码关注云+社区

领取腾讯云代金券