Python 에서 XML 내용 을 추출 하여 Excel 에 저장 하 는 방법
최근 프로젝트 는 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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.