gpt4 book ai didi

python - 如何在没有结束标签的情况下解析XML文档(python)?

转载 作者:行者123 更新时间:2023-12-01 03:00:14 24 4
gpt4 key购买 nike

我正在尝试读取似乎没有结束标记的 xml 文档。我没有制作此 XML 文档,但我从以下位置下载它:

import ftplib
import xml.etree.cElementTree as et

filename = 'FBOFeed20170509'

ftp = ftplib.FTP('ftp.fbo.gov')
ftp.login(user = '', passwd = '')

localfile = open(filename, 'wb')
ftp.retrbinary('RETR ' + filename, localfile.write, 1024)

ftp.quit()
localfile.close()

tree = et.parse(filename)

for node in tree.iter():
print (node.tag, node.attrib)

这是我的错误:

Traceback (most recent call last):
File "", line 18, in <module>
tree = et.parse(filename)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/xml/etree/ElementTree.py", line 1184, in parse
tree.parse(source, parser)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/xml/etree/ElementTree.py", line 596, in parse
self._root = parser._parse_whole(source)
File "<string>", line None
xml.etree.ElementTree.ParseError: mismatched tag: line 24, column 2

所以我用文本编辑器打开文件看了一下,发现没有结束标签。以下是前 24 行:

<PRESOL>
<DATE>0509
<YEAR>17
<AGENCY>Department of the Air Force
<OFFICE>Air Education and Training Command
<LOCATION>Luke AFB Contracting Squadron
<ZIP>85309
<CLASSCOD>Z
<NAICS>238320
<OFFADD>14100 W. Eagle Street Luke AFB AZ 85309
<SUBJECT>Painting IDIQ Luke AFB
<SOLNBR>FA488717R0005
<CONTACT>Justin A Cheeks, Phone 8566232747, Email justin.cheeks@us.af.mil
<DESC>The 56th ...
<LINK>
<URL>https://www.fbo.gov/spg/USAF/AETC/LukeAFBCS/FA488717R0005/listing.html
<DESC>Link To Document
<SETASIDE>Service-Disabled Veteran-Owned Small Business
<POPCOUNTRY>US
<POPZIP>85309
<POPADDRESS>14100 W Eagle Street (B-26)

Luke AFB, AZ
</PRESOL>

我猜这个错误与 PRESOL 用/PRESOL 关闭有关,但其他标签都没有关闭。这是一个简单的条目,其他一些条目在 DESC 或 CONTACT 部分中包含各种 HTML 标签,因此我不确定如何在解析之前编写一些内容来关闭标签,例如这里是文件的另一部分:

<CONTACT>Tammy Davis
Tammy.Davis6@va.gov

<a href="mailto:tammy.davis6@va.gov">Tammy.Davis6@va.gov</a>
<DESC>The purpose...

我不确定所有标签的顺序是否相同,甚至每个条目的顺序是否相同。这还是 XML 格式吗?我应该在这里使用不同的 python 库吗?

最佳答案

https://github.com/presidential-innovation-fellows/fbo-parser将每日 FBO 文件解析为 JSON,将结束标签添加到通知类型中的字段。我使用它,然后将其转换为 XML 文件以将数据导入到我的数据库中。

关于python - 如何在没有结束标签的情况下解析XML文档(python)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43919722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com