xlrdを使用してExcelファイルを読み取ってtxtファイルに書き込もうとしています。'Téd'のようなスペイン語の文字を含む一部の行を除いて、すべてが正常に書き込まれています。latin-1エンコーディングを使用してそれらをエンコードできます。ただし、コードは、ユニコードu'\u2013'の'â'を持つ他の行では失敗します。u'\ 2013'は、latin-1を使用してエンコードすることはできません。UTF-8を使用する場合、「â」は正常に書き出されますが、「Téd」は「Téd」として書き出されます。これは受け入れられません。これを修正するにはどうすればよいですか。
以下のコード:
#!/usr/bin/python
import xlrd
import csv
import sys
filePath = sys.argv[1]
with xlrd.open_workbook(filePath) as wb:
shNames = wb.sheet_names()
for shName in shNames:
sh = wb.sheet_by_name(shName)
csvFile = shName + ".csv"
with open(csvFile, 'wb') as f:
c = csv.writer(f)
for row in range(sh.nrows):
sh_row = []
cell = ''
for item in sh.row_values(row):
if isinstance(item, float):
cell=item
else:
cell=item.encode('utf-8')
sh_row.append(cell)
cell=''
c.writerow(sh_row)
print shName + ".csv File Created"