从文件中移除<feff>
3 个回答
0
这里有一个脚本的例子,它使用了一个真正能处理XML的库来进行类似的转换。虽然输出结果不完全一样,但这只是一个例子,具体效果可以根据需要调整。
import csv
import lxml.etree
csvFile = 'myData.csv'
xmlFile = 'myData.xml'
reader = csv.reader(open(csvFile, 'r'))
with lxml.etree.xmlfile(xmlFile) as xf:
xf.write_declaration(standalone=True)
with xf.element('root'):
for row in reader:
row_el = lxml.etree.Element('row')
for col in row:
col_el = lxml.etree.SubElement(row_el, 'col')
col_el.text = col
xf.write(row_el)
如果你想获取,比如说,第2行第3列的内容,你可以用XPath这样的方式来表示:/row[2]/col[3]/text()
。
10
将 utf-8 改成 utf-8-sig
import csv with open('example.txt', 'r', encoding='utf-8-sig') as file:
10
你的输入文件里有BOM(字节顺序标记)字符,而Python在文件编码为utf8时不会自动去掉这些字符。你可以查看这个链接了解更多信息:在Python中读取带BOM字符的Unicode文件数据
>>> s = '\xef\xbb\xbfABC'
>>> s.decode('utf8')
u'\ufeffABC'
>>> s.decode('utf-8-sig')
u'ABC'
所以针对你的具体情况,可以试试下面这样的做法
from io import StringIO
s = StringIO(open(csvFile).read().decode('utf-8-sig'))
csvData = csv.reader(s)
虽然这个写法很糟糕,但这个脚本本来就是为了临时使用而匆忙写的。