Python实现提取XML内容并保存到Excel中的⽅法本⽂实例讲述了Python实现提取XML内容并保存到Excel中的⽅法。分享给⼤家供⼤家参考,具体如下:
最近做⼀个项⽬是解析XML⽂件,提取其中的chatid和lt、timestamp等信息,存到excel⾥。
1.解析xml,提取数据
使⽤python⾃带的xml.dom中的minidom(也可以⽤lxml)
xml⽂件如下:
minidom.parse()#解析⽂件,返回DOM对象
_get_documentElement()DOM是树形结构,获得了树形结构的根节点
getElementsByTagName()根据name查根⽬录下的⼦节点
getAttribute()获取DOM节点的属性的值
提取的代码如下:
class get_xml():
#加载获取xml的⽂档对象
def __init__(self,address):
#解析address⽂件,返回DOM对象,address为⽂件地址
self.doc = minidom.parse(address)
#DOM是树形结构,_get_documentElement()获得了树形结构的根节点
python处理xml文件< = self.doc._get_documentElement()
#.getElementsByTagName(),根据name查根⽬录下的⼦节点
self.httpSample_nodes = ElementsByTagName('httpSample')
def getxmldata(self):
data_list=[]
j = -1
responseData_node = ElementsByTagName("responseData")
for i in self.httpSample_nodes:
j = j+1
#getAttribute(),获取DOM节点的属性的值
Attribute("lb") == "发送信息":
a = 'chatId":"(.*?)"'
Attribute("lb") == "接收信息":
# a = "chatId%3A%22(.*?)%22"
a = "info%3A%22(.*?)%22"
if (i.getAttribute("lb") == "发送信息" Attribute("lb") == "接收信息") Attribute("rc") == "200":
try:
#使⽤re包⾥⾯的⽅法,通过正则表达式提取数据
b = re.search(a, responseData_node[j].firstChild.data)
if b is not None:
d = b.group(1)
print("d:",d)
data_list.append((d, i.getAttribute("ts"), i.getAttribute("lt"),i.getAttribute("lb")))
except:
pass
return data_list
2.存储为Excel,导出数据到Excel
⽤到的包openpyxl,openpyxl.workbook下的Workbook()⽤来在内存⾥创建⽂件,最后写进磁盘的
wb = load_workbook(filename = XXXX.xlsx):读取Excel⽂件,⽂件地址为XXXX.xlsx
wb = Workbook():创建⼀个Workbook对象
ew = ExcelWriter(workbook = wb):新建⼀个excelWriter,最后⽤来保存
ws = wb.worksheets[0]:打开⼀个sheet,sheet位置是0,即第1个sheet
ew.save(filename = XXXX.xlsx):将数据导出到本地,本地⽂件地址为XXXX.xlsx
⼀个导出Excel的例⼦如下:
import openpyxl
from openpyxl import writer,load_workbook
# Workbook⽤来在内存⾥创建⽂件最后写进磁盘的
from openpyxl.workbook import workbook, Workbook
from l import ExcelWriter
ll import get_column_letter
# if __name__ == "__main__":
def importexcel(match,dest_filename):
if(ists(dest_filename)):
wb = load_workbook(filename=dest_filename)
else:
wb = Workbook()
ew = ExcelWriter(workbook = wb)
#创建⼀个新sheet
# 打开已存在的第⼀个sheet,也可以⽤get_sheet_names获得所有的sheet的名字
ws = wb.worksheets[0]
ws.title = "聊聊发送接收请求"
l = 2
for i in match:
print(i,l)
l = l+1
ew.save(filename = dest_filename)
PS:这⾥再为⼤家提供⼏款关于xml操作的在线⼯具供⼤家参考使⽤:
更多关于Python相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家Python程序设计有所帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论