python实战——XML转Json

需求

将xml文件转换为json文件,在网上找了一圈,发现文件大了,还收费,我这暴脾气,自己写一个吧!

实现

安装必须的依赖库,我们需要安装json库,用于处理json文件
pip install json
再装一个处理将xml转换为字典类型的库
pip install xmltodict==0.12.0

我们找一个xml文件吧,随便找了一个rss的xml文件,它的内容如下,
注意哈,内容中包含中文,一不小心转换结果很容易出现乱码

<rss>
  <channel>
    <title>参考消息电子版</title>
    <link>http://www.ckxx.info/</link>
    <item>
      <guid>http://www.ckxx.info/other1/201111/7-55584.html</guid>
      <title>伊朗核问题临近最后摊牌</title>
      <description>伊朗核问题临近最后摊牌</description>
      <link>http://www.ckxx.info/other1/201111/7-55584.html</link>
      <pubDate>2011-11-07</pubDate>
    </item>
    <item>
      <guid>http://www.ckxx.info/other1/201111/7-55583.html</guid>
      <title>日本天皇因病住院</title>
      <author>http://www.ckxx.info</author>
      <description>日本天皇因病住院</description>
      <link>http://www.ckxx.info/other1/201111/7-55583.html</link>
    </item>
  </channel>
</rss>

直接上代码吧,创建一个converter.py的文件,代码很简单,加载xml文件,将xml转换为字典类型,再将字典类型转换为json字符串,然后写入一个新文件就大功告成了

# -*- coding: utf-8 -*-
import json
import xmltodict

# 主程序,执行入口
if __name__ == '__main__':
    with open('input1.xml', encoding="UTF-8") as xml_file:
        # 将xml文件转化为字典类型数据
        parsed_data = xmltodict.parse(xml_file.read())
        # 关闭文件流,其实 不关闭with也会帮你关闭
        xml_file.close()
        # 将字典类型转化为json格式的字符串
        json_conversion = json.dumps(parsed_data, ensure_ascii=False)
        # 将字符串写到文件中
        with open('output.json', 'w', encoding="UTF-8") as json_file:
            json_file.write(json_conversion)
            json_file.close()

运行 python converter.py 就能得到转换后的output.csv文件,结果如下:

{
  "rss": {
    "channel": {
      "title": "参考消息电子版",
      "link": "http://www.ckxx.info/",
      "item": [
        {
          "guid": "http://www.ckxx.info/other1/201111/7-55584.html",
          "title": "伊朗核问题临近最后摊牌",
          "description": "伊朗核问题临近最后摊牌",
          "link": "http://www.ckxx.info/other1/201111/7-55584.html",
          "pubDate": "2011-11-07"
        },
        {
          "guid": "http://www.ckxx.info/other1/201111/7-55583.html",
          "title": "日本天皇因病住院",
          "author": "http://www.ckxx.info",
          "description": "日本天皇因病住院",
          "link": "http://www.ckxx.info/other1/201111/7-55583.html"
        }
      ]
    }
  }
}

需要注意的点

1.读取xml文件的时候,如果里面包含中文,要指定编码格式
with open(‘input1.xml’, encoding=“UTF-8”) as xml_file

  1. 将字典类型转化为json格式的字符串,需要把ascii码自动识别给关闭,要不然会出现下面的结果
    json_conversion = json.dumps(parsed_data, ensure_ascii=False)
    自动ascii
    3.将json字符串写入文件时候,需要指定编码,否则在中文的地方会出现乱码
    with open(‘output.json’, ‘w’, encoding=“UTF-8”) as json_file
    指定写入编码

如果 对您有帮助,请关注或点赞我哈。
如果您也对python有兴趣,我这里有一本《python编程手册》,里面几乎囊括了python的方方面面(1000页),可以作为字典使用以备忘记知识点的时候进行查询。领取方式:在鄙人的共重号(python实例实战)里发送 “python学习手册“” 进行领取,还有每天的实战实例。您的支持是我最大的动力,感谢!

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值