Python 奇淫技巧 — 利用pandas读取xml转换为excel

Python 奇淫技巧 — 利用pandas读取xml转换为excel因为工作需要,将xml中特定的节点值取出来,然后统计到excel中。于是乎试试写了一个python脚本,加快工作效率。而且今后还能复用。以下为完整示例,需要的朋友们可参考。示例XML<?xmlversion=”1.0″encoding=”utf-8″?><breakfast_menu><food><name>BelgianWaffles</name><price>$5.95

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

因为工作需要, 将xml中特定的节点值取出来, 然后统计到excel中。 于是乎试试写了一个python脚本, 加快工作效率。 而且今后还能复用。

以下为完整示例, 需要的朋友们可参考。

示例 XML

<?xml version="1.0" encoding="utf-8"?>

<breakfast_menu> 
  <food> 
    <name>Belgian Waffles</name>  
    <price>$5.95</price>  
    <description>Two of our famous Belgian Waffles with plenty of real maple syrup</description>  
    <calories>650</calories> 
  </food>  
  <food> 
    <name>Strawberry Belgian Waffles</name>  
    <price>$7.95</price>  
    <description>Light Belgian waffles covered with strawberries and whipped cream</description>  
    <calories>900</calories> 
  </food>  
  <food> 
    <name>Berry-Berry Belgian Waffles</name>  
    <price>$8.95</price>  
    <description>Light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>  
    <calories>900</calories> 
  </food>  
  <food> 
    <name>French Toast</name>  
    <price>$4.50</price>  
    <description>Thick slices made from our homemade sourdough bread</description>  
    <calories>600</calories> 
  </food>  
  <food> 
    <name>Homestyle Breakfast</name>  
    <price>$6.95</price>  
    <description>Two eggs, bacon or sausage, toast, and our ever-popular hash browns</description>  
    <calories>950</calories> 
  </food> 
</breakfast_menu>

python 脚本

from lxml import etree
import pandas as pd

def read_data_from_xml(xml_path):
    xml_content = ""
    with open(xml_path,'rb') as f:
        xml_content = f.read()

    excel_data = [["食物", "价格", "卡路里", "描述"]]

    xml_data = etree.XML(xml_content)
    foods = xml_data.xpath("//food")
    for food in foods:
        excel_row_data = []
        excel_row_data.extend(food.xpath("name/text()"))
        excel_row_data.extend(food.xpath("price/text()"))
        excel_row_data.extend(food.xpath("calories/text()"))
        excel_row_data.extend(food.xpath("description/text()"))
        excel_data.append(excel_row_data)

    return excel_data




def to_csv(writer, excel_data, sheet_name):

    data_df = pd.DataFrame(excel_data[1:])
    data_df.columns = excel_data[0]
    data_df.to_excel(writer,float_format='%.10f',index=False, sheet_name=sheet_name)
    worksheet = writer.sheets[sheet_name]
 	
 	// 设置列宽
    cols = "%s:%s" % ('A', chr(ord('A') + len(data_df.columns) - 1))
    worksheet.set_column(cols, 30)

// 读取xml
excel_data_ = read_data_from_xml("food.xml")

writer = pd.ExcelWriter('food.xlsx')
to_csv(writer, excel_data_, "food1")
writer.save()

最终效果
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171956.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月22日 下午5:00
下一篇 2022年8月22日 下午5:00


相关推荐

  • 分布式文件存储——简介

    分布式文件存储——简介1、分布式文件系统种类简介:常见的分布式文件系统有:GlusterFS、GoogleFS、FastDFS、TFS等,各自适用的领域不同,它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。现在比较火的并且好用的应该就是OSS了,阿里云对象存储服务(ObjectStorageService,简称OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。OSS具有与…

    2022年5月1日
    59
  • php三个数从大到小排列_单分支if语句和双分支

    php三个数从大到小排列_单分支if语句和双分支<?php$a = rand(100,999);$b = rand(100,999);$c = rand(100,999);echo “a=”.”$a”.”<br>”;echo “b=”.”$b”.”<br>”;echo “c=”.”$c”.”<br>”;if(($a > $b ) && ($a > …

    2022年8月18日
    12
  • eigen库教程_mkl库

    eigen库教程_mkl库1.Matrix类:定义:Matrix<类型,行,列>eigen库中封装好了一些常用的矩阵,例如:typedefMatrix<float,4,4>Matrix4f;当然我们也可以自己设置,矩阵的行和列可以设置为固定的值也可以设置动态的(Dynamic),小的尺寸用固定的,大的尺寸用动态的,使用固定尺寸可以避免动态内存的开辟。1)初始化…

    2022年10月18日
    6
  • MySQL乐观锁(MySQL乐观锁)

    悲观锁与乐观锁的区别悲观锁会把整个对象加锁占为已有后才去做操作,Java中的Synchronized属于悲观锁。悲观锁有一个明显的缺点就是:它不管数据存不存在竞争都加锁,随着并发量增加,且如果锁的时间比较长,其性能开销将会变得很大。乐观锁不获取锁直接做操作,然后通过一定检测手段决定是否更新数据,这种方式下,已经没有所谓的锁概念了,每条线程都直接先去执行操作,计算完成后检测是否与其他线程存在共享数据…

    2022年4月16日
    36
  • crm创建基于fetch自己的自定义报告

    crm创建基于fetch自己的自定义报告

    2022年1月3日
    40
  • jenkins自定义构建参数_git怎么切换分支

    jenkins自定义构建参数_git怎么切换分支前言当我们的自动化项目越来越多的时候,在代码仓库会提交不同的分支来管理,在用jenkins来构建的时候,我们希望能通过参数化构建git仓库的分支。下载安装GitParameter插件系统管理-

    2022年7月31日
    64

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号