启用Excel以UTF8格式打开Python CSV输出

启用Excel以UTF8格式打开Python CSV输出,python,excel,csv,utf-8,Python,Excel,Csv,Utf 8,关于这个问题,我已经读过几篇类似的文章,但都没有用——我将列表列表输出到csv文件,但是特殊字符没有正确显示,因为Excel没有将其读取为UTF8 我是一个初学者,所以我正在努力实现人们使用的一些变通方法,例如写入UTF16和使用BOM-我最近的尝试是尝试将BOM添加到我的输出CSV中,但它不起作用 with open(outputname, "wb") as f: writer = csv.writer(f) writer.writerows(my_list) f.write(u'

关于这个问题,我已经读过几篇类似的文章,但都没有用——我将列表列表输出到csv文件,但是特殊字符没有正确显示,因为Excel没有将其读取为UTF8

我是一个初学者,所以我正在努力实现人们使用的一些变通方法,例如写入UTF16和使用BOM-我最近的尝试是尝试将BOM添加到我的输出CSV中,但它不起作用

with open(outputname, "wb") as f:
  writer = csv.writer(f)
  writer.writerows(my_list)
  f.write(u'\ufeff'.encode('utf8')) # BOM

我尝试过一些更复杂的方法,比如使用UnicodeWriter,但没有成功。任何想法都将不胜感激

我终于明白了这一点,以防它对其他人有用-在导出到csv之前,我先对嵌套列表中存储的csv内容进行解码,然后将内容重新编码到“cp1252”中,我相信这是Excel使用的编码。虽然还没有在Mac上测试过,但它确实可以在Windows上运行

for i in range(len(nestedlist)):
    for j in range(7):
        x = nestedlist[i][j]
        y = unicode(x, 'utf-8')
        nestedlist[i][j] = y.encode('cp1252')

事后看来,在这里使用openpyxl处理Excel元素要容易得多。