【问题标题】:Convert XML structure to DataFrame using BeautifulSoup - python使用 BeautifulSoup - python 将 XML 结构转换为 DataFrame
【发布时间】:2018-10-18 11:08:07
【问题描述】:

我有一个没有漂亮打印的以下 XML 结构。

<?xml version="1.0" encoding="UTF-8" ?><root><animals><tiger>10</tiger><lion>20</lion><fox>30</fox></animals></root>

这是我将 XML 结构转换为 Pandas df 的代码。

from bs4 import BeautifulSoup
import pandas as pd
file = open("testing.xml","r")
soup = BeautifulSoup(file.read(),'xml')
animals = soup.find_all('animals')
animal_list = []
for animal in animals:
   animal_list.append(animal.get_text())
animals_df = pd.DataFrame({'animals': animal_list})
animals_df

但是我的代码没有产生正确的结果。

Actual result
   animals
0   102030

Expected result
   animals
0   10
1   20
2   30

谁能帮我得到预期的结果?

【问题讨论】:

    标签: xml python-3.x beautifulsoup


    【解决方案1】:

    find_all 返回一个列表。由于只有一个animals 节点,您应该使用animals = soup.find('animals')animals = soup.find_all('animals')[0]for animal in animals[0]:

    animals = soup.find('animals')
    animal_list = []
    for animal in animals:
        animal_list.append(animal.get_text())
    print(pd.DataFrame({'animals': animal_list}))
    #   animals
    # 0      10
    # 1      20
    # 2      30
    

    【讨论】:

    • 如果有多个标签,假设我的 XML 结构有 ......,它应该如何工作?
    • @WalkerRickies 包含所需节点列表和另一个 for 循环(或正则表达式,soup.find_all(re.compile(r'(animals|reptiles)'))
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2011-04-08
    • 2021-09-06
    • 1970-01-01
    • 2016-06-01
    • 2020-12-09
    相关资源
    最近更新 更多