【发布时间】:2017-04-24 20:44:14
【问题描述】:
我正在寻找一种将 CSV 自动转换为 XML 的方法。
这是一个 CSV 文件的示例,其中包含电影列表:
这是 XML 格式的文件:
<collection shelf="New Arrivals">
<movietitle="Enemy Behind">
<type>War, Thriller</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
<movietitle="Transformers">
<type>Anime, Science Fiction</type>
<format>DVD</format>
<year>1989</year>
<rating>R</rating>
<stars>8</stars>
<description>A schientific fiction</description>
</movie>
<movietitle="Trigun">
<type>Anime, Action</type>
<format>DVD</format>
<episodes>4</episodes>
<rating>PG</rating>
<stars>10</stars>
<description>Vash the Stampede!</description>
</movie>
<movietitle="Ishtar">
<type>Comedy</type>
<format>VHS</format>
<rating>PG</rating>
<stars>2</stars>
<description>Viewable boredom</description>
</movie>
</collection>
我尝试了一些示例,其中我能够使用 Python 使用 DOM 和 SAX 读取 csv 和 XML 格式,但我仍然找到了一个简单的转换示例。到目前为止,我有:
import csv
f = open('movies2.csv')
csv_f = csv.reader(f)
def convert_row(row):
return """<movietitle="%s">
<type>%s</type>
<format>%s</format>
<year>%s</year>
<rating>%s</rating>
<stars>%s</stars>
<description>%s</description>
</movie>""" % (
row.Title, row.Type, row.Format, row.Year, row.Rating, row.Stars, row.Description)
print ('\n'.join(csv_f.apply(convert_row, axis=1)))
但我得到了错误:
File "moviesxml.py", line 16, in module
print ('\n'.join(csv_f.apply(convert_row, axis=1)))
AttributeError: '_csv.reader' object has no attribute 'apply'
我对 Python 还是很陌生,因此非常感谢任何帮助!
我正在使用 Python 3.5.2。
谢谢!
丽莎
【问题讨论】:
-
请edit您的问题并包含您尝试过的Python代码。有用吗?
-
嗨,由于某种原因,我的 DOM 和 SAX 代码损坏了,我忘记了在哪里找到示例代码。我已经包含了导入 csv 方法