如何在python中保存多个xml文件

Posted

技术标签:

【中文标题】如何在python中保存多个xml文件【英文标题】:How to save multiple xml files in python 【发布时间】:2016-12-30 10:28:51 【问题描述】:

我正在尝试从网站获取一系列天气报告,我有以下代码为我想要的 XML 创建所需的 URL,用不同名称保存返回的 XML 的最佳方法是什么?

with open('file.csv') as csvfile:
    towns_csv = csv.reader(csvfile, dialect='excel')
    for rows in towns_csv:
        x = float(rows[2])
        y = float(rows[1])
        url = ("http://api.met.no/weatherapi/locationforecast/1.9/?")
        lat = "lat="+format(y) 
        lon = "lon="+format(x)
        text = url + format(lat) + ";" + format(lon)

我一直在用这段代码保存单个 XMls;

response = requests.get(text)
xml_text=response.text
winds= bs4.BeautifulSoup(xml_text, "xml") 
f = open('test.xml', "w")
f.write(winds.prettify())
f.close()

CSV 文件的第一列上有城市名称,理想情况下,我希望使用这些名称来保存每个创建的 XML 文件。我确定另一个 for 循环会做,我只是不确定如何创建它。 任何帮助都会很棒,再次感谢堆栈。

【问题讨论】:

【参考方案1】:

您已经完成了大部分工作。只需使用rows[0] 作为您的文件名。假设rows[0] 是'mumbai',那么rows[0]+'.xml' 会给你'mumbai.xml' 作为文件名。您可能想检查城市名称是否有需要删除的空格等。

with open('file.csv') as csvfile:
    towns_csv = csv.reader(csvfile, dialect='excel')
    for rows in towns_csv:
        x = float(rows[2])
        y = float(rows[1])
        url = ("http://api.met.no/weatherapi/locationforecast/1.9/?")
        lat = "lat="+format(y) 
        lon = "lon="+format(x)
        text = url + format(lat) + ";" + format(lon)
        response = requests.get(text)
        xml_text=response.text
        winds= bs4.BeautifulSoup(xml_text, "xml") 
        f = open(rows[0]+'.xml', "w")
        f.write(winds.prettify())
        f.close()

【讨论】:

以上是关于如何在python中保存多个xml文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 代码中解析多个 xml 文件?

如何将静态字符串保存到 XML 文件?

如何提取XML文件中的数据?

如何在文档中下载和保存 xml,然后如何从文档中解析 xml 文件?

XML停止覆盖/保存多个条目

如何使用 Linq to XML 将 HTML 保存在 XML 文件中?