複数のワークシートを持つExcelファイルがあります。特定のワークシートをファイルから取り出し、カンマで区切られたCSVファイルとして保存したいと思います(私はまだこれまでには得られていません)。ワークシートには、右下の最後の列に似た特殊文字のデータが含まれています。私はこれらの文字を無視しても構いません。これまでCSVに特殊文字を含むExcelワークシート
**DateStamp Country ComputerName Domain IPAddress OperatingSystem**
2017-05-24 USA Computer1 Domain1 1.2.3.4 Windows 2008
2017-05-24 England Computer2 Domain2 1.2.3.5 Windows Server® 2008
私のコードは次のとおりです。
import os
import xlrd
import sys
file = 'path/to/my/file.xlsx'
workbook = xlrd.open_workbook(file)
sheet = workbook.sheet_by_name('Data')
for rowx in range(sheet.nrows):
coldata = sheet.row_values(rowx)
coldata = " ".join(str(x) for x in coldata).encode('ascii')
with open ('/path/log.txt','a') as results:
results.write(coldata)
results.close()
私はのようにそれ以外の場合は、uは私は私の中でたくない各フィールドの横にを、「が含まれる文字列にデータを変換することが午前CSV。それをしようとすると、私は様々なエラーに遭遇しています。私は取得しています エラーがある:私は文字を無視しようとした場合
UnicodeEncodeError: 'ascii' codec can't encode character u'\xae' in position 14: ordinal not in range(128)
、私はこれをアップ土地:私はログに書き込むことができています前に、
colsdata = colsdata.decode('ascii','ignore')
Attribute error: 'list' object has no attribute 'decode'
これらのエラーは、場所を取ります。
お願いします。ありがとう!
おかげで、しかし最後の行だけが書かれていますファイルに?たとえファイルに書き込む前にcoldataを印刷しても、そのデータは1行だけです。また、それは区切られていませんが、どこで指定しますか? –
私はコードを更新しました。上記の例は、あなたのExcelファイルが本当に大きい場合、メモリを大量に消費する可能性があることに注意してください。その場合、ファイルに直接書き込むことができます。 –
完璧に動作します - ありがとう!興味のあることは、「NFKD」を参照して正規化機能が何をしているのか説明できますか? –