如何解决使用python xml或simplified_scrapy
我正在尝试将 1 个 XML 文件转换为 CSV/xls。我试过下面的代码,但似乎不起作用。 我必须为 Role = Base 的“NodeName”获取 CentreFrequency。 下面是示例 XML https://pastebin.com/Ln4Ug0hN
from bs4 import BeautifulSoup
import pandas as pd
import lxml
import xml.etree.cElementTree
import openpyxl
import inspect
import os
import tkinter
from tkinter import filedialog
root = tkinter.Tk()
dirname = filedialog.askopenfilename(parent=root,initialdir="/",title='Please select a file')
root = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
sites = "xmll.xml"
with open(sites,"r",encoding='unicode_escape') as f:
xml_data = f.read()
soup = BeautifulSoup(xml_data,"xml")
#ss=soup.find_all("NodeName").text
# 'INAPKVLIVglrTW6001ENBIB5004'
tag1 = input("Enter tagname1:")
tag2 = input("Enter tagname2:")
# in a loop
data = []
dd = []
for td in soup.find_all(tag1):
data.append({"Name": td.text})
for snmp in soup.find_all(tag2):
dd.append({"CentreFrequency": snmp.text})
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(dd)
df = pd.merge(df1,df2,left_index=True,right_index=True)
解决方法
我从一个名为“simplified_scrapy”的用户那里找到了一个非常容易用于 XML 到 CVS 的库 以下是您可以尝试的解决方案
from simplified_scrapy import SimplifiedDoc,utils,req
import inspect
import time
import os
import pandas as pd
def delEmptyRows(name,encoding="utf-8"):
lines = utils.getFileLines(name,encoding=encoding)
lines = [line for line in lines if line.strip()!='']
utils.saveFile(name,"".join(lines),encoding=encoding)
root = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
xml = utils.getFileContent(root +'/xml.xml')
#xml = open('mumbai2.xml','r').read
doc = SimplifiedDoc(xml)
lstNodeResult = doc.selects('IBridge2ConfigResult')
data = [['NodeName','CenterFrequency']]
for result in lstNodeResult:
lstrole = result.selects('IBridge2Config>Role')
frequency = result.CenterFrequency.text
NodeName = result.NodeName.text
row = [NodeName,frequency]
if NodeName !=' ':
data.append(row)
# print (data)
utils.save2csv('Frequency_List.csv',data)
delEmptyRows('Frequency_List.csv')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。