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”相关的内容吗? –