1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python 读取excel格式xml 读取xml格式的xls文件 解析其中数据

python 读取excel格式xml 读取xml格式的xls文件 解析其中数据

时间:2023-11-18 13:04:56

相关推荐

python 读取excel格式xml 读取xml格式的xls文件 解析其中数据

1。python 读取excel格式xml,解析其中数据

当excel文件的格式是xml的时候,window系统是可以正常打开的,但是使用pandas直接读取则会报错,原因就是现在已经是xml文件了,

这个是/qq_38150441/article/details/80685458?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase

别人用正则来解析的,但是感觉非常不友好,下面使用xml模块来解析

最后发现原来该文件是披着xls格式的xml文件,查找了很多资料,发现大多数都是针对纯xml文件的解决方法,对于偏向于excel结构的很少。由于我的xml文件一打开就只有一行,而且很卡,所以光检查文件里的标签就花了很长时间。下面附上一般偏向excel的xml文件。

we2。python读取xml格式的xls文件,并写出csv文件

查了大量的资料,这个应该是比较简单使用的方式了。有用,可以赞下。

附上github地址:

#!/usr/bin/env python#-*- coding:utf-8 -*-"""@author: zhengxianjun@contact: 1596492090@@datetime:/7/14 下午3:59@software: PyCharm """import pandas as pdimport xml.etree.ElementTree as ETclass Xml2DataFrame:@staticmethoddef read_xml(xmlFileName):"""读取xml数据,返回df:param xmlFileName::return:"""# with open(xmlFileName, 'r') as xml_file:tree = ET.parse(xmlFileName)# 访问根节点root = tree.getroot()# 根据excel 的xml格式下找到具体的存放数据的标签 一般就是这个标签了Worksheet = tree.find('{urn:schemas-microsoft-com:office:spreadsheet}Worksheet') #--------------------查找第一标签中'Data'标签# 往下找标签 通过数组的方式table = Worksheet[0]##第一个就是 Worksheet子标签 row_len = len(table) ## row长度# 我这里要把第一行当作表头 所以要取第一行做处理 如果不需要则忽略header_row = table[0]colums_conut = len(header_row)colums = []# 第一行做表头for i in range(colums_conut):c = header_row[i][0].text if header_row[i][0].text else 'index'colums.append(c)data_list = []# 遍历每一行的数据,返回dictfor i in range(1,row_len):# 每一行的数据row = table[i]d_row = {}for i in range(colums_conut): ##去除第一行 以k-v的形式存value = row[i][0].textd_row[colums[i]] = valuedata_list.append(d_row)data_list# 将数据转化成df 不转化则直接使用 return pd.DataFrame(data_list)if __name__ == '__main__':excel_path = r'/home/jun/桌面/test_data/MLPA_2030/MLPA-BRCA1-2688 sample report.xml'xml_df = Xml2DataFrame.read_xml(excel_path) # 读取到dfprint(xml_df)

3。附上我解析的xml格式

<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel"xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"xmlns:html="/TR/REC-html40"><DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Author></Author><LastAuthor></LastAuthor><Created></Created><LastSaved></LastSaved><Version>12.00</Version></DocumentProperties><ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"><WindowHeight>8130</WindowHeight><WindowWidth>15135</WindowWidth><WindowTopX>120</WindowTopX><WindowTopY>45</WindowTopY><ProtectStructure>False</ProtectStructure><ProtectWindows>False</ProtectWindows></ExcelWorkbook><Styles><Style ss:ID="Default" ss:Name="Normal"><Alignment ss:Vertical="Bottom"/><Borders/><Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/><Interior/><NumberFormat/><Protection/></Style></Styles><Worksheet ss:Name="Sheet1"><Table x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="15"><Row ss:AutoFitHeight="0"><Cell><Data ss:Type="String"></Data></Cell><Cell><Data ss:Type="String">Probe target info</Data></Cell><Cell><Data ss:Type="String">[MLPA-BRCA1-2688].[Height]</Data></Cell><Cell><Data ss:Type="String">[MLPA-BRCA1-2688].[Area]</Data></Cell><Cell><Data ss:Type="String">[MLPA-BRCA1-2688].[Intra ratio]</Data></Cell><Cell><Data ss:Type="String">[MLPA-BRCA1-2688].[Pre ratio]</Data></Cell><Cell><Data ss:Type="String">[MLPA-BRCA1-2688].[Final ratio]</Data></Cell><Cell><Data ss:Type="String">[MLPA-BRCA1-2688].[Stdev]</Data></Cell><Cell><Data ss:Type="String">[MLPA-BRCA1-2688].[RefPop]</Data></Cell><Cell><Data ss:Type="String">[MLPA-BRCA1-2688].[SamPop]</Data></Cell><Cell><Data ss:Type="String">[MLPA-BRCA1-2688].[d(nt)]</Data></Cell><Cell><Data ss:Type="String">[MLPA-BRCA1-2688].[Width]</Data></Cell></Row><Row ss:AutoFitHeight="0"><Cell><Data ss:Type="String">[17q (n=28)].[BRCA1-24]</Data></Cell><Cell><Data ss:Type="String">17-038.451268</Data></Cell><Cell><Data ss:Type="String">12783</Data></Cell><Cell><Data ss:Type="String">114841</Data></Cell><Cell><Data ss:Type="String">1.05</Data></Cell><Cell><Data ss:Type="String">1.1</Data></Cell><Cell><Data ss:Type="String">1.05</Data></Cell><Cell><Data ss:Type="String">0.04</Data></Cell><Cell><Data ss:Type="String">Equal</Data></Cell><Cell><Data ss:Type="String">Equal</Data></Cell><Cell><Data ss:Type="String">0.01</Data></Cell><Cell><Data ss:Type="String">89</Data></Cell></Row></Table><WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"><PageSetup><Header x:Margin="0.3"/><Footer x:Margin="0.3"/><PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/></PageSetup><Unsynced/><Selected/><Panes></Panes><ProtectObjects>False</ProtectObjects><ProtectScenarios>False</ProtectScenarios></WorksheetOptions></Worksheet></Workbook>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。