ASCII编码/解码

2024-04-18 21:00:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有csv文件有编码-'utf-8'。我需要用相同的编码将csv转换为excel工作簿,但无法这样做。尝试了很多事情,但都没能解决。下面是代码片段。 注意:使用xlsxwriter包

def csv_to_excel(input_file_path, output_file_path):
    file_path = input_file_path
    excel_file_path = output_file_path
    wb = Workbook(excel_file_path.encode('utf-8', 'ignore'), {'encoding': 'utf-8'})
    sheet1 = wb.add_worksheet(("anyname1").encode('utf-8','ignore'))
    sheet2 = wb.add_worksheet(("anyname2").encode('utf-8','ignore'))

    for filename in glob.glob(file_path):
        (f_path, f_name) = os.path.split(filename)
         w_tab = str(f_name.split('_')[2]).split('.')[0] 
         if (w_tab=="anyname1"):
             w_sheet = sheet1
         elif (w_tab=="anyname2"):
             w_sheet = sheet2

         spamReader = csv.reader(open(filename, "rb"), delimiter=',',quotechar='"')
         row_count = 0
         for row in spamReader:
             for col in range(len(row)):
                  w_sheet.write(row_count,col,row[col])
             row_count +=1     
    try:
         os.remove(excel_file_path)
    except:
         pass
    wb.close()
    print "Converted CSVs to Excel File"

错误: 案例1:当我试图打开utf-8编码的csv文件时,如下所示:

spamReader = csv.reader(io.open(filename, "r", encoding = 'utf-8'), delimiter=',',quotechar='"')

然后在遍历spamReader对象时出错 UnicodeEncodeError:“ascii”编解码器无法对92位的字符u“\u2013”进行编码:序号不在范围内(128)

案例2:当我试图打开与上述代码片段中提到的二进制相同的csv文件时,我无法将其保存为utf-8编码的excel,因此在调用wb.关闭(),获取错误为 UnicodeDecodeError:'ascii'编解码器无法解码位置12中的字节0xe2:序号不在范围内(128)

我刚刚开始学习python,所以也许这不是什么大问题,但请在这方面帮助我。你知道吗


Tags: 文件csvpathin编码forfilenameexcel