【问题标题】:Convert XML to CSV using SAX Python使用 SAX Python 将 XML 转换为 CSV
【发布时间】:2013-03-29 00:09:13
【问题描述】:

我有一个数据量很大的 XML 文件。

XML 文件包含

<us-bibliographic-data-grant>
    <publication-reference>
        <document-id>
            <country>US</country>
            <doc-number>D0607176</doc-number>
            <kind>S1</kind>
            <date>20100105</date>
        </document-id>
    </publication-reference>

    <application-reference appl-type="design">
        <document-id>
            <country>US</country>
            <doc-number>29327507</doc-number>
            <date>20081107</date>
        </document-id>
    </application-reference>

    <invention-title id="d0e55">Doughnut product with six appendages</invention-title>

    <applicants>
        <applicant sequence="001" app-type="applicant-inventor" designation="us-only">
            <addressbook>
            <last-name>Peters</last-name>
            <first-name>Brian Jeffery</first-name>
                <address>
                    <street>7052 Moonlight Cir.</street>
                    <city>Huntington Beach</city>
                    <state>CA</state>
                    <postcode>92647</postcode>
                    <country>US</country>
                </address>
            </addressbook>
            <nationality>
                <country>omitted</country>
            </nationality>
            <residence>
                <country>US</country>
            </residence>
        </applicant>
    </applicants>
</us-bibliographic-data-grant>

我怎样才能得到这样的输出

last-name,first-name,street,city,state,postcode,country
peters,brian jeffery, 7052 moonlight cir.,huntington beach,CA,92647

我对 XML 完全没有经验,请帮忙 在这段 XML 代码中,有很多 &lt;addressbook&gt;。那么如何获取第一行applicant 中的所有属性,并且下一行被所有值填充。我想这样做是因为我想稍后将 csv 文件导入到 sql。

【问题讨论】:

  • 此 xml 无效。
  • 为什么?我只是复制它的一部分,所以有一些 startElements 没有 endElements
  • 粘贴 XML HERE 或其他一些验证器。尝试通过解析器运行它。它无效或不完整。
  • 我已经验证了代码(我之前编辑过...),它说“没有发现错误”

标签: python xml sax


【解决方案1】:

如果您只想从一种文件类型转换为另一种文件类型,则应使用工具。这里有一个建议——https://code.google.com/p/xml2csv-conv/

过去,当我需要解释复杂的 xml 文档时,我使用过 xslt。

【讨论】:

  • 我被要求为此使用 Python。仅转换地址部分...请帮助
【解决方案2】:

我为此使用 BeautifulSoup,只需将您的 filename.xml 替换为“字符串格式”中的 sample_1.xml

from bs4 import BeautifulSoup
with open("sample_1.xml", encoding= 'UTF-8') as fp:
soup = BeautifulSoup(fp, 'xml')
for a in soup.findAll("addressbook"):
    print(a.text)

输出: 彼得斯 布赖恩·杰弗里 7052 月光环 亨廷顿海滩 加州 92647 美国

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-16
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多