解析uspto xml文件

时间:2019-04-27 21:38:01

标签: python xml csv

我正在尝试将uspto的xml专利文件解析为csv。我阅读并尝试了各种方法。最近,我遇到了这个post 但是,我找不到解决方法 您可以找到我要解析的XML文件here 我也尝试使用beautifulsoup,但没有运气。

这是我使用的代码

import xml.etree.ElementTree as x


path = r"C:\Users\XX\Downloads\ipg190423\ipg190423.xml"
d = []
s = ""
f = open(path)
for l in f:
    if l == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n":
        if len(s)>0:
            d.append(s)
        s = ""
    s += l
d.append(s)

index = 0
for xm in d:
    root = x.fromstring(xm)
    for e in root.iter(tag="patent-"):
        print(e)
        index += 1
        filename = format(str(index) + ".xml")
        with open(filename, 'w') as f:
            f.write(x.tostring(e))

1 个答案:

答案 0 :(得分:1)

我下载了其中一个文档,问题是它们不是有效的XML文档。它们由多个串联在一起的XML文档组成。基本结构是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE us-patent-grant SYSTEM "us-patent-grant-v45-2014-04-03.dtd" [ ]>
<us-patent-grant>
.
.
.
</us-patent-grant>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE us-patent-grant SYSTEM "us-patent-grant-v45-2014-04-03.dtd" [ ]>
<us-patent-grant>
.
.
.
</us-patent-grant>

例如,在ipgb20190101_wk01.zip中有7162个XML文档串联在一起。在解析这些数据之前,您将必须编写代码以依次提取每个XML文档。

更新

您可以使用csplit命令将XML文档提取到单独的文件中:

csplit -f 'patent-' -b '%02d.xml' ipgb20190101.xml '/^<?xml /' '{*}'

这将为您提供文件patent-0000.xmlpatent-7126.xml(假设您使用与我相同的示例数据)。