我有一个XML格式不正确,因为我在尝试读取XML时遇到以下错误:
import xml.etree.ElementTree as ET
ET.parse(r'my.xml')
我得到下面的错误
ParseError: not well-formed (invalid token): line 2034, column 317
因此,我使用BeautifulSoup
通过以下代码读取xml:
from bs4 import BeautifulSoup
with open(r'my.xml') as fp:
soup = BeautifulSoup(fp, 'xml')
如果我打印soup
,它看起来是这样的:
<Placemark>
<name>India </name>
<description>Country</description>
<styleUrl>#icon-962-B29189</styleUrl>
</Placemark>
<Placemark>
<name>USA</name>
<styleUrl>#icon-962-B29189</styleUrl>
</Placemark>
<Placemark>
<description>City</description>
<styleUrl>#icon-962-B29189</styleUrl>
</Placemark>
我总共有100多个Placemark
标记和其中的信息。我想捕获每个标签的name
和description
,并用相应的列创建一个df
。你知道吗
我的代码是:
name_tag=[x.text.strip() for x in soup.findAll('name')]
description_tag =[x.text.strip() for x in soup.findAll('description')]
问题是有些Placemark
标记我根本没有name
或description
标记。因此我不知道哪个名字有什么描述。因此,由于缺少标记,名称和描述之间存在不匹配。你知道吗
预期输出数据帧:
Name Description
India Country
USA
City
他们有没有办法让我达到同样的目的?你知道吗
因为您分别搜索
name
和description
标记,所以您无法知道哪个名称属于哪个描述。你知道吗相反,您应该单独解析每个
placemark
标记,并处理每个placemark标记缺少name
和description
标记的情况。你知道吗相关问题 更多 >
编程相关推荐