解析 csv 文件以将详细信息添加到 xml 文件

问题描述 投票:0回答:1

需要帮助解析 csv 文件,该文件具有 xml 文件的以下详细信息

csv 文件格式如下:

name,ip,timeout
domain\user1,10.119.77.218,9000
domain\user2,2.80.189.26,9001
domain\user3,4.155.10.110,9002
domain\user4,9.214.119.86,9003
domain\user5,4.178.187.27,9004
domain\user6,3.76.178.117,9005

上述 csv 详细信息需要添加到具有以下格式的 XML 文件中:

<login>
      <entry name="domain\user1" ip="10.119.77.218" timeout="9000"/>
      <entry name="domain\user2" ip="2.80.189.26" timeout="9001"/>
      <entry name="domain\user11" ip="4.155.10.110" timeout="12000"/>
      ...
</login>

需要一些脚本,因为有一些文件需要转换。我尝试了以下工具: https://www.convertcsv.com/csv-to-xml.htm

但是上述工具将单个行转换为不需要的单独条目。正在寻找您的反馈。谢谢你。

python xml csv scripting
1个回答
0
投票

如果 CSV/XML 文件的结构很简单,您可以使用

csv
模块并直接构造字符串(对于更复杂的场景我推荐
lxml
/
bs4
模块):

import csv

with open("your_data.csv", "r") as f:
    reader = csv.reader(f)
    header = next(reader)
    data = list(reader)

out = ["<login>"]
for line in data:
    s = " ".join(f'{k}="{v}"' for k, v in zip(header, line))
    out.append(f"\t<entry {s} />")
out.append("</login>")

print(*out, sep="\n")

打印:

<login>
        <entry name="domain\user1" ip="10.119.77.218" timeout="9000" />
        <entry name="domain\user2" ip="2.80.189.26" timeout="9001" />
        <entry name="domain\user3" ip="4.155.10.110" timeout="9002" />
        <entry name="domain\user4" ip="9.214.119.86" timeout="9003" />
        <entry name="domain\user5" ip="4.178.187.27" timeout="9004" />
        <entry name="domain\user6" ip="3.76.178.117" timeout="9005" />
</login>
© www.soinside.com 2019 - 2024. All rights reserved.