使用 Python 和 pureXML 操作 CSV 数据
2010-02-25 00:00:00 来源:WEB开发网将 CSV 数据转换成 XML 文档
要将 CSV 转换成 XML,您首先必须明白应该如何储存数据,是否分开储存不同的记录,并检查是否存在应该删除的无用记录。在您刚才下载的样例 CSV 文件中,您将注意到它包含 3 种类型的数据:1 行针对整个国家的数据;4 行针对地区 Northeast、Midwest、South 和 West 的数据、51 行针对美国 50 个州和哥伦比亚特区的数据,还有 1 行针对 Puerto Rico Commonwealth 的数据。该文件的第一行是一个标题行,用作列名。
您在本小节中创建的脚本将选择标题行,并使用该数据构成 XML 文档中的记录应该具有的每个元素的标记名。该脚本将根据前 4 列决定特定的行引用 country、region 还是 state,并相应地设置标记名以表明引用哪个 XML 文档。最后,该脚本将选择排除 Puerto Rico Commonwealth 记录,因为它包含不完整的数据。
在您的文本编辑器中,创建一个新的文件并以 convert.py 为名保存它。将 清单 4 中的代码添加到该文件中。
清单 4. convert.py
import csv
reader = csv.reader(open('data.csv'), delimiter=',', quoting=csv.QUOTE_NONE)
print "<data>"
for record in reader:
if reader.line_num == 1:
header = record
else:
innerXml = ""
dontShow = False
type = ""
for i, field in enumerate(record):
innerXml += "<%s>" % header[i].lower() + field + "</%s>"
% header[i].lower()
if i == 1 and field == "0":
type = "country"
elif type == "" and i == 3 and field == "0":
type = "region"
elif type == "" and i == 3 and field != "0":
type = "state"
if i == 1 and field == "X":
dontShow = True
if dontShow == False:
xml = "<%s>" % type
xml += innerXml
xml += "</%s>" % type
print xml
print "</data>"
更多精彩
赞助商链接