Python 에서 XML 내용 을 추출 하여 Excel 에 저장 하 는 방법

5287 단어 PythonXMLExcel
이 글 은 Python 이 XML 내용 을 추출 하여 엑셀 에 저장 하 는 방법 을 실례 로 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
최근 프로젝트 는 XML 파일 을 분석 하여 chatid 와 lt,timestamp 등 정 보 를 추출 하여 엑셀 에 저장 하 는 것 입 니 다.
1.xml 분석,데이터 추출
python 이 자체 적 으로 가지 고 있 는 xml.dom 의 minidom 을 사용 합 니 다(lxml 도 사용 할 수 있 습 니 다)
xml 파일 은 다음 과 같 습 니 다:

minidom.parse()\#파일 을 분석 하고 DOM 대상 을 되 돌려 줍 니 다.
_get_document Element()DOM 은 트 리 구조 로 트 리 구조의 뿌리 노드 를 얻 었 습 니 다.
getElementsByTagName()name 에 따라 루트 디 렉 터 리 의 하위 노드 찾기
getAttribute()DOM 노드 의 속성 값 가 져 오기
추출 한 코드 는 다음 과 같 습 니 다:

class get_xml():
  #    xml     
  def __init__(self,address):
    #  address  ,  DOM  ,address     
    self.doc = minidom.parse(address)
    #DOM     ,_get_documentElement()           
    self.root = self.doc._get_documentElement()
    #.getElementsByTagName(),  name          
    self.httpSample_nodes = self.root.getElementsByTagName('httpSample')
  def getxmldata(self):
    data_list=[]
    j = -1
    responseData_node = self.root.getElementsByTagName("responseData")
    for i in self.httpSample_nodes:
      j = j+1
      #getAttribute(),  DOM       
      if i.getAttribute("lb") == "    ":
        a = 'chatId":"(.*?)"'
      elif i.getAttribute("lb") == "    ":
        # a = "chatId%3A%22(.*?)%22"
        a = "info%3A%22(.*?)%22"
      if (i.getAttribute("lb") == "    " or i.getAttribute("lb") == "    ") and i.getAttribute("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.엑셀 로 저장,엑셀 로 데이터 내 보 내기
사용 하 는 패키지 openpyxl,openpyxl.workbook 의Workbook()메모리 에 파일 을 만 들 고 마지막 으로 디스크 에 쓴 것 입 니 다.
wb = load_workbook(filename=XXXX.xlsx):Excel 파일 을 읽 고 파일 주 소 는 XXXX.xlsx 입 니 다.
wb=Workbook():Workbook 대상 만 들 기
ew=Excel Writer(workbook=wb):엑셀 Writer 를 새로 만 들 고 마지막 으로 저장 합 니 다.
wb.create_sheet(0,'XXX'):sheet 을 새로 만 듭 니 다.위 치 는 0 이 고 sheet 이름 은 XXX 입 니 다.
ws=wb.worksheets[0]:sheet 하 나 를 열 면 sheet 위 치 는 0,즉 첫 번 째 sheet 입 니 다.
ws.cell(row=1,column=1).value=XXX:1 줄 1 열의 위치 에 데이터 XXX 추가
ew.save(filename=XXXX.xlsx):데 이 터 를 로 컬 로 내 보 냅 니 다.로 컬 파일 주 소 는 XXXX.xlsx 입 니 다.
Excel 내 보 내기 예 는 다음 과 같 습 니 다.

import openpyxl
from openpyxl import writer,load_workbook
# Workbook                 
from openpyxl.workbook import workbook, Workbook
from openpyxl.writer.excel import ExcelWriter
from openpyxl.cell import get_column_letter
# if __name__ == "__main__":
def importexcel(match,dest_filename):
  if(os.path.exists(dest_filename)):
    wb = load_workbook(filename=dest_filename)
  else:
    wb = Workbook()
  ew = ExcelWriter(workbook = wb)
  #     sheet
  wb.create_sheet(0, '        ')
  #          sheet,    get_sheet_names     sheet   
  ws = wb.worksheets[0]
  ws.title = "        "
  ws.cell('A1').value = "chartid"
  ws.cell('B1').value = "     "
  ws.cell('C1').value = "     "
  ws.cell('D1').value = "    "
  ws.cell('E1').value = "  lt"
  ws.cell('F1').value = "          "
  l = 2
  for i in match:
    ws.cell(row=l,column=1).value = i['chatId']
    ws.cell(row=l,column=2).value = i['accept_timestamp']
    ws.cell(row=l,column=3).value = i['send_timestamp']
    ws.cell(row=l,column=4).value = i['timestamp_gap']
    ws.cell(row=l,column=5).value = i['accept_lt']
    ws.cell(row=l,column=6).value = i['response_time']
    print(i,l)
    l = l+1
  ew.save(filename = dest_filename)

PS:여기 서 xml 작업 에 관 한 온라인 도 구 를 몇 가지 더 제공 하여 참고 하 시기 바 랍 니 다.
온라인 XML/JSON 상호 변환 도구:
http://tools.jb51.net/code/xmljson
온라인 포맷 XML/온라인 압축 XML:
http://tools.jb51.net/code/xmlformat
XML 온라인 압축/포맷 도구:
http://tools.jb51.net/code/xml_format_compress
XML 코드 온라인 포맷 미화 도구:
http://tools.jb51.net/code/xmlcodeformat
Python 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기