【发布时间】:2016-10-19 14:07:27
【问题描述】:
我有一个 python 脚本,它读取 CSV 文件并写入 XML 文件。我一直在尝试找出如何阅读特殊字符,例如:ç、á、é、í 等。脚本运行得非常好,没有特殊字符。那是脚本头:
# coding=utf-8
'''
@modified by: Julierme Pinheiro
'''
import os
import sys
import unittest
from unittest import skip
import csv
import uuid
import xml
import xml.dom.minidom as minidom
import owslib
from owslib.iso import *
import pyproj
from decimal import *
import logging
我从 csv 文件中检索信息的方式如下所示:
# add the title
title = data[1]
titleElement = identificationInfo[0].getElementsByTagName('gmd:title')[0]
titleNode = record.createTextNode(title)
titleElement.childNodes[1].appendChild(titleNode)
print "Title:" + title
注意:如果 csv 文件中的第二列 data[1] 包含在“Navegação”中找到的特殊字符,则脚本将失败(它不会在xml 文件)。
基于空白模板 XML 创建新 XML 文件的方式如下所示:
# write out the gemini record
filename = '../output/%s.xml' % fileId
with open(filename,'w') as test_xml:
test_xml.write(record.toprettyxml(newl="", encoding="utf-8"))
except:
e = sys.exc_info()[1]
logging.debug("Import failed for entry %s" % data[0])
logging.debug("Specific error: %s" % e)
@skip('')
def testOWSMetadataImport(self):
raw_data = []
with open('../input/metadata_cartapapel.csv') as csvfile:
reader = csv.reader(csvfile, dialect='excel')
for columns in reader:
raw_data.append(columns)
md = MD_Metadata(etree.parse('gemini-template.xml'))
md.identification.topiccategory = ['farming','environment']
print md.identification.topiccategory
outfile = open('mdtest.xml','w')
# crap, can't update the model and write back out - this is badly needed!!
outfile.write(md.xml)
if __name__ == "__main__":
unittest.main()
有人可以帮忙解决这个问题吗?
提前感谢您的宝贵时间。
【问题讨论】:
-
Python 2 CSV 文档中有 examples 说明如何处理 Unicode 数据。顺便说一句,您应该以二进制模式打开 CSV 文件,但我猜您是在 Linux 上,所以除非您希望能够在 Windows 上运行您的脚本,否则您真的不需要为此烦恼。