pandas读取xml文件
原创答案来自stackflow import pandas as pd from xml.sax import ContentHandler,parse # Reference https://goo.gl/KaOBG3 class ExcelHandler(ContentHandler): def __init__(self): self.chars = [ ] self.cells = [ ] self.rows = [ ] self.tables = [ ] def characters(self,content): self.chars.append(content) def startElement(self,name,atts): if name=="Cell": self.chars = [ ] elif name=="Row": self.cells=[ ] elif name=="Table": self.rows = [ ] def endElement(self,name): if name=="Cell": self.cells.append(''.join(self.chars)) elif name=="Row": self.rows.append(self.cells) elif name=="Table": self.tables.append(self.rows) excelHandler = ExcelHandler() parse('coalpublic2012.xls',excelHandler)#文件名 df1 = pd.DataFrame(excelHandler.tables[0][1:],columns=excelHandler.tables[0][0]) 另外还有不同情况。 在我使用的过程中,发现有些xml的格式不一样,导致上面的excelHandler用不了,如开头和结尾是这样的,是可以用的: 开头 <Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="151" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="48" ss:DefaultRowHeight="12.75"><Row><Cell ss:StyleID="s50"><Data ss:Type="String">xe5x9fx8exe5xb8x82</Data></Cell><Cell ss:StyleID="s51"> 结尾 </Data></Cell></Row></Table><WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> 但是开头和结尾是这样的,需要修改,将excelHandler的Cell/Row/Table修改为对应的ss:Cell/ss:Row/ss:Table就可以了: 开头 <ss:Table>n', ' </ss:Row>n', ' < /ss:Table>n', ' </Worksheet>n', '</Workbook>']
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |