My XML的嵌套结构与此类似:
<xml>
<top>
<main_record attr1="val1" attr2 = "val2" attr3="val3">
<sub_record attrx="valx" attry="valy" />
</main_record>
<main_record attr1="val4" attr2 = "val5" attr3="val6">
<sub_record attrx="valx2" attry="valy2" />
</main_record>
<main_record attr1="val7" attr2 = "val8" attr3="val9">
<sub_record attrx="valx3" attry="valy3" />
</main_record>
</top>
</xml>
我正在尝试使用beautiful soup提取每个“主记录”及其“子记录”属性的数据,以便在CSV文件中按行使用它
我可以让一个循环打印出文件中的所有attr1、attr2和attr3值,但当我尝试在其中添加一个子循环以获取attrx和attry时,它无法正常工作
from bs4 import BeautifulSoup
f = open("C:\\tracker.log", "r")
x = f.read()
soup = BeautifulSoup(x, 'html.parser')
for entity in soup.find_all('main_record'):
print(entity.get('attr1'))
print(entity.get('attr2'))
print(entity.get('attr3'))
for positions in soup.find('sub_record'):
print(positions.get('attrx'))
print(positions.get('attry'))
感谢您的帮助/指点
对于第二个For循环使用
entity.find_all
检查以下代码:
您可以尝试以下方法:
输出:
您可以转换为json/dictionary,然后让pandas将其展平。你需要
pip install xmltodict
鉴于:
代码:
输出:
如果您想摆脱
'@'
,只需将其替换为''
:相关问题 更多 >
编程相关推荐