我嘗試歸檔以下內容:的Python - 讀XLS - >操作 - >寫CSV
輸入:xls文件 輸出:csv文件
我想讀的XLS,並做一些操作(重寫頭文件(原始:customernumer,csv需要Customer_Number__c),刪除一些列等。
現在我已經在閱讀xls,並嘗試寫爲csv(沒有任何操作),但我掙扎着,因爲編碼 原始文件包含一些「特殊」字符,如「/」,「\」,以及大多數impoartan t「ä,ü,ö,ß」。
我得到以下錯誤:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 8: ordinal not in range(128)
我不知道它的特殊字符可以在一個文件中,這從隨時改變。
這裏是我當前的沙箱代碼:
# -*- coding: utf-8 -*-
__author__ = 'adieball'
import xlrd
import csv
from os import sys
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument("inname", type=str,
help="Names of the Input File in single quotes")
parser.add_argument("--outname", type=str,
help="Optional enter the name of the output (csv) file. if nothing is given, "
"we use the name of the input file and add .csv to it")
args = parser.parse_args()
if args.outname is None:
outname = args.inname + ".csv"
else:
outname = args.outname
wb = xlrd.open_workbook(args.inname)
xl_sheet = wb.sheet_by_index(0)
print args.inname
print ('Retrieved worksheet: %s' % xl_sheet.name)
print outname
output = open(outname, 'wb')
wr = csv.writer(output, quoting=csv.QUOTE_ALL)
for rownum in xrange(wb.sheet_by_index(0).nrows):
wr.writerow(wb.sheet_by_index(0).row_values(rownum))
output.close()
什麼我可以在這裏做,以確保這些特殊字符被寫入到CSV以同樣的方式,因爲他們出現了原始XLS?
感謝
安德烈
我勸xlrd,這個工作與操作系統無關,特別是如果你實現一個服務器。 – return42 2015-02-11 16:38:09