将多个制表符分隔的.txt文件转换为多个.xls文件

我是python的新手,我正在尝试使用下面显示的代码来执行上面的标题所说的。它一直运行到我要求保存xls输出的地步。任何帮助将不胜感激。


import glob

import csv

import xlwt


for 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 save

doc.save(filename, self.get_biff_data())

File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 637, in get_biff_data

shared_str_table   = self.__sst_rec()

File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 599, in __sst_rec

return self.__sst.get_biff_record()

File "C:\Python27\lib\site-packages\xlwt\BIFFRecords.py", line 76, in get_biff_record

self._add_to_sst(s)

File "C:\Python27\lib\site-packages\xlwt\BIFFRecords.py", line 91, in _add_to_sst

u_str = upack2(s, self.encoding)

File "C:\Python27\lib\site-packages\xlwt\UnicodeUtils.py", line 50, in upack2

us = unicode(s, encoding)

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc7 in position 4: ordinal not in    range(128)


慕码人8056858
浏览 136回答 3
3回答

烙印99

我相信,您需要为输出电子表格设置编码。您需要知道该文件正在使用什么编码。csv模块不直接支持unicode,但是[8-bit-clean][1]它仅适用于大多数西方语言。在不知道文本文件的编码是什么的情况下,您有两个选择。选项1是根据python使用本地编码:&nbsp; &nbsp;>>> import locale&nbsp; &nbsp;>>> lang_code, encoding = locale.getdefaultlocale()^^请小心使用getdefaultlocale()。该文档指出,编码可能为None。或者只是回退到UTF8,然后交叉手指:D。&nbsp; &nbsp;>>> encoding = 'UTF8'&nbsp; &nbsp;>>> workbook = xlwt.Workbook(encoding=encoding)

人到中年有点甜

您没有转义文件名。例如,在Python字符串"consulta_cand_2010\newName.xls"具有"\n"在中间,这是最终的行的字符---一个文件名无效!在Windows中,你需要编写包含文件名的文本字符串"C:\\Like\\This"或者"C:/Like/This"甚至r"C:\Like\This"。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python