
[英]How do I parse attribute values from multiple xml files to one pandas dataframe?
[英]How to parse XML with multiple attribute values within a single tag to DataFrame?
<?xml version="2.0" encoding="UTF-8" ?><timestamp="20220113">
<defintions>
<defintion id="1" old_id="0">Lang</defintion>
<defintion id="7" old_id="1">Eng</defintion>
我如何解析这样的 XML 文件? 在这里,我在一个标签中有多个值。 我想以list
或dataframe
格式提取值,例如“ID”和“OLD_ID”。
您可以使用BeautifulSoup
和xml
解析器来实现您的目标,只需 select 所需的元素并迭代ResultSet
以通过.get()
提取属性值。
with open('filename.xml', 'r') as f:
file = f.read()
soup = BeautifulSoup(file, 'xml')
from bs4 import BeautifulSoup
import pandas as pd
xml = '''<?xml version="2.0" encoding="UTF-8" ?><timestamp="20220113">
<defintions>
<defintion id="1" old_id="0">Lang</defintion>
<defintion id="7" old_id="1">Eng</defintion>
'''
soup = BeautifulSoup(xml,'xml')
pd.DataFrame(
[
(e.get('id'),e.get('old_id'))
for e in soup.select('defintion')
],
columns = ['id','old_id']
)
ID | 旧ID | |
---|---|---|
0 | 1个 | 0 |
1个 | 7 | 1个 |
使用 python Beautiful Soup,您可以将 .xml 文件解析为 Beatuful soup object,然后使用.findAll('defintions')。 然后遍历找到的标签并获得所需的值
object.findAll('defintions')
for defintion in defintions:
old_id = defintions['old_id']
id = defintions['id']
参考资料: https://www.crummy.com/software/BeautifulSoup/bs4/doc/ https://linuxhint.com/parse_xml_python_beautifulsoup/
如果你有一个像XML 这样的有效值(时间戳标签不能有像属性这样的值):
<?xml version='1.0' encoding='utf-8'?>
<root timestamp='20220113'>
<defintions>
<defintion id="1" old_id="0">Lang</defintion>
<defintion id="7" old_id="1">Eng</defintion>
</defintions>
</root>
比你可以使用pandas
:
import pandas as pd
df = pd.read_xml('x89.xml', xpath='.//defintion')
print(df.to_string(index=False))
Output:
id old_id defintion
1 0 Lang
7 1 Eng
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.