【问题标题】:Regarding XML to CSV conversion in python query关于python查询中的XML到CSV转换
【发布时间】:2021-12-23 15:26:17
【问题描述】:

很高兴通过这个平台认识你。作为初学者,我有疑问。在这里,我有示例 XML 文档。我必须将它从 xml 表单转换为 csv 表单。

<message>
<mail>raj@gmail.com</mail>
<address>
<houseno> 123 </houseno>
</address>
</message>

<message>
<mail>raj@gmail.com</mail>
<contact> 23278378</contact>
<address>
<houseno> 123 </houseno>
</address>
</message>

<message>
<mail>raj@gmail.com</mail>
<address>
<houseno> 123 </houseno>
</address>
<place> Mumbai </place>
</message>

在上面的 xml 中,我想访问邮件、联系地址和地点并存储在 csv 文件中。本文档中的消息标签中没有通用标签。因此我无法访问它..请帮助我该怎么做..?

【问题讨论】:

    标签: python xml csv


    【解决方案1】:

    一种方法是安装和使用beautifulsoup。这可以找到所有message 条目。例如:

    from bs4 import BeautifulSoup
    import csv
    
    xml = """<message>
    <mail>raj@gmail.com</mail>
    <address>
    <houseno> 123 </houseno>
    </address>
    </message>
    
    <message>
    <mail>raj@gmail.com</mail>
    <contact> 23278378</contact>
    <address>
    <houseno> 123 </houseno>
    </address>
    </message>
    
    <message>
    <mail>raj@gmail.com</mail>
    <address>
    <houseno> 123 </houseno>
    </address>
    <place> Mumbai </place>
    </message>"""
    
    soup = BeautifulSoup(xml, "html.parser")
    
    with open('output.csv', 'w', newline='', encoding='utf-8') as f_output:
        csv_output = csv.writer(f_output)
        csv_output.writerow(['Mail', 'Address', 'Place'])
        
        for message in soup.find_all('message'):
            mail = message.mail.text
            address = message.address.houseno.get_text(strip=True)
            place = message.place.get_text(strip=True) if message.place else ''
            csv_output.writerow([mail, address, place])
    

    这将创建一个 CSV 输出文件:

    Mail,Address,Place
    raj@gmail.com,123,
    raj@gmail.com,123,
    raj@gmail.com,123,Mumbai
    

    【讨论】:

    • 好先生...它非常适合格式错误的 html 或 xml 标签...非常感谢
    • 不客气!
    猜你喜欢
    • 1970-01-01
    • 2018-01-25
    • 2017-04-24
    • 2020-08-28
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多