0
我有一個包含多個工作表的Excel文件。我想從文件中取出一個特定的工作表,並將其保存爲一個CSV文件,並用逗號分隔(至今我還沒有這樣做)。該工作表包含特殊字符與右下方最後一列相似的數據。我不介意忽略這些角色。將帶有特殊字符的Excel工作表輸出爲CSV
**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,它只有一行數據。也沒有劃界,我在哪裏指定? –
我更新了代碼。你應該知道,如果你的excel文件真的很大,上面的例子可能是內存密集型的。在這種情況下,您可能需要直接寫入文件。 –
完美工作 - 謝謝!感興趣的問題,請您介紹一下標準化函數與「NFKD」相關的內容嗎? –