我是python的新手,我正在尝试使用下面显示的代码来执行上面的标题所说的。它一直运行到我要求保存xls输出的地步。任何帮助将不胜感激。import globimport csvimport xlwtfor filename in glob.glob("C:\xxxx\*.txt"): wb = xlwt.Workbook() sheet = wb.add_sheet('sheet 1') newName = filename spamReader = csv.reader(open(filename, 'rb'), delimiter=';',quotechar='"') for rowx, row in enumerate(spamReader): for colx, value in enumerate(row): sheet.write(rowx, colx, value) wb.save(newName + ".xls")print "Done"Traceback (most recent call last):File "C:/Users/Aline/Desktop/Python_tests/1st_trial.py", line 13, in <module>wb.save("C:\Users\Aline\Documents\Data2013\consulta_cand_2010\newName.xls")File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 662, in savedoc.save(filename, self.get_biff_data())File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 637, in get_biff_datashared_str_table = self.__sst_rec()File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 599, in __sst_recreturn self.__sst.get_biff_record()File "C:\Python27\lib\site-packages\xlwt\BIFFRecords.py", line 76, in get_biff_recordself._add_to_sst(s)File "C:\Python27\lib\site-packages\xlwt\BIFFRecords.py", line 91, in _add_to_sstu_str = upack2(s, self.encoding)File "C:\Python27\lib\site-packages\xlwt\UnicodeUtils.py", line 50, in upack2us = unicode(s, encoding)UnicodeDecodeError: 'ascii' codec can't decode byte 0xc7 in position 4: ordinal not in range(128)
3 回答
烙印99
TA贡献1829条经验 获得超13个赞
我相信,您需要为输出电子表格设置编码。您需要知道该文件正在使用什么编码。csv模块不直接支持unicode,但是[8-bit-clean][1]它仅适用于大多数西方语言。
在不知道文本文件的编码是什么的情况下,您有两个选择。选项1是根据python使用本地编码:
>>> import locale
>>> lang_code, encoding = locale.getdefaultlocale()
^^请小心使用getdefaultlocale()。该文档指出,编码可能为None。
或者只是回退到UTF8,然后交叉手指:D。
>>> encoding = 'UTF8'
>>> workbook = xlwt.Workbook(encoding=encoding)
人到中年有点甜
TA贡献1895条经验 获得超7个赞
您没有转义文件名。例如,在Python字符串"consulta_cand_2010\newName.xls"
具有"\n"
在中间,这是最终的行的字符---一个文件名无效!
在Windows中,你需要编写包含文件名的文本字符串"C:\\Like\\This"
或者"C:/Like/This"
甚至r"C:\Like\This"
。
添加回答
举报
0/150
提交
取消