【问题标题】:How to convert XML to table?如何将 XML 转换为表格?
【发布时间】:2018-11-29 14:46:03
【问题描述】:

我从一个 URL 中获取一个 XML 字符串。这部分工作正常。

REQUEST_URL = 'https://URL'
response = requests.get(REQUEST_URL, auth=(login, password))
xml_data = response.text.encode('utf-8', 'ignore') 
tree = ET.parse(xml_data)
root = tree.getroot()

print(response.text) gives me:

<?xml version='1.0' standalone='yes'?><Report Type='SLA Report'
 SiteName='Execute Query'
 SLA_Name='Execute Query'
 SLA_Description='Execute Query'
 From='2018-11-27 00:00'
 Thru='2018-11-27 23:59' 
 obj_device='4500'
 locations='69,31,'
>
<Objective Type='Availability'>
<Goal>99.93</Goal>
<Actual>99.93</Actual>
<Compliant>Yes</Compliant>
<Errors>2</Errors>
<Checks>2878</Checks>
</Objective>
<Objective Type='Uptime'>
<Goal></Goal>
<Actual></Actual>
<Compliant></Compliant>
<Errors>0</Errors>
<Checks>0</Checks>
</Objective>
<Objective Type='Response Time'>
<Goal>300.00</Goal>
<Actual>3.1164</Actual>
<Compliant>Yes</Compliant>
<Errors>0</Errors>
<Checks>2878</Checks>
</Objective>
<MonitoringPeriods>
<Monitor>
<Exclude>No</Exclude><DayFrom>Sunday</DayFrom><TimeFrom>00:00</TimeFrom><DayThru>Sunday</DayThru><TimeThru>23:59</TimeThru>
</Monitor>

我想将数据放入一个表格中,以便于使用。如何使用 Python 3.x 做到这一点?当我将它导入 Excel 时,它看起来很棒。

可能是这样的:

for sla in root.findall('Objective'):
    goal = sla.find('Goal').text
    actual = sla.find('Actual').text
    compliant = sla.find('Compliant').text
    errors = sla.find('Errors').text
    checks = sla.find('Checks').text
    print('Goal:', goal, 'Actual:', actual, 'Compliant:', compliant, 'Errors:', errors, 'Checks:', checks)

但我想将每个数据点加载到数据框中,而不是打印每个数据点。如何使用 Python 做同样的事情? TIA。

【问题讨论】:

  • 我认为您正在寻找 Pandas 库。看到这个答案:https://stackoverflow.com/a/45815394/10358386
  • 这有点帮助,但我想将一些项目(但不是全部)加载到数据框中。我真的在寻找能够让我更好地控制将哪些元素加载到数据框中的东西。谢谢。
  • 我知道 excel 非常适合将 xml 转换为表格。但是在 pandas/ython 中没有现成的方法可以做到这一点。一种可能的方法是计算级别,然后完成转换。任何极客编码这个?

标签: python xml python-3.x dataframe


【解决方案1】:

请打印:

# importing csv module 
import csv 

# csv file name 
filename = "aapl.csv"

# initializing the titles and rows list 
fields = [] 
rows = [] 

# reading csv file 
with open(filename, 'r') as csvfile: 
    # creating a csv reader object 
    csvreader = csv.reader(csvfile) 

    # extracting field names through first row 
    fields = csvreader.next() 

    # extracting each data row one by one 
    for row in csvreader: 
        rows.append(row) 

    # get total number of rows 
    print("Total no. of rows: %d"%(csvreader.line_num)) 

# printing the field names 
print('Field names are:' + ', '.join(field for field in fields)) 

# printing first 5 rows 
print('\nFirst 5 rows are:\n') 
for row in rows[:5]: 
    # parsing each column of a row 
    for col in row: 
        print("%10s"%col), 
    print('\n') 

来源:https://www.geeksforgeeks.org/working-csv-files-python/

【讨论】:

    猜你喜欢
    • 2021-10-03
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    相关资源
    最近更新 更多