将多个制表符分隔的.txt文件转换为多个.xls文件 [英] Converting multiple tab-delimited .txt files into multiple .xls files
问题描述
我是python的新手,我试图做上面的标题用下面显示的代码。它运行到我要求保存xls输出的点。任何帮助将非常感激。
I am a newbie to python and I am trying to do what the title above says with the code displayed below. It runs up to the point where I ask to save the xls output. Any help would be very much appreciated.
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)
此代码适用。
[edit] This code works.
import glob
import csv
import xlwt
for filename in glob.glob("C:\\Users\\Aline\\Documents\\Data2013\\consulta_cand_2010\\*.txt"):
spamReader = csv.reader((open(filename, 'rb')), delimiter=';',quotechar='"')
encoding = 'latin1'
wb = xlwt.Workbook(encoding=encoding)
sheet=xlwt.Workbook()
sheet = wb.add_sheet('sheet 1')
newName = filename
for rowx, row in enumerate(spamReader):
for colx, value in enumerate(row):
sheet.write(rowx, colx, value)
wb.save(newName + ".xls")
print "Done"
推荐答案
我相信你需要为输出电子表格设置你的编码。您需要知道该文件使用的是什么编码。 csv模块不直接支持unicode,但它 [8-bit-clean] [1]
所以它只适用于大多数西方语言。
Your encoding needs to be set for the output spreadsheet, I believe. You'd need to know what encoding that file is using. The csv module does not directly support unicode, but it's [8-bit-clean][1]
so it just works for most western languages.
不知道你的文本文件的编码是什么,你有两个选择。选项1使用根据python的本地编码:
Without knowing what the encoding of your text file is, you have two options. Option 1 is use your local encoding according to python:
>>> import locale
>>> lang_code, encoding = locale.getdefaultlocale()
^^小心使用getdefaultlocale该文档声明,编码可能无。
^^ Be careful using getdefaultlocale(). The documentation states that encoding MAY BE None.
或只是回退到UTF8,
OR just fallback to UTF8 and cross your fingers :D.
>>> encoding = 'UTF8'
>>> workbook = xlwt.Workbook(encoding=encoding)
这篇关于将多个制表符分隔的.txt文件转换为多个.xls文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!