Python 使用io.String创建与Excel兼容的utf8 CSV
我想创建一个通过邮件发送的CSV字符串。我希望避免使用临时文件,因为我不需要处理文件系统。正如我所说,数据被传递到一个邮件类 我找到了这个巧妙的解决办法Python 使用io.String创建与Excel兼容的utf8 CSV,python,python-3.x,csv,Python,Python 3.x,Csv,我想创建一个通过邮件发送的CSV字符串。我希望避免使用临时文件,因为我不需要处理文件系统。正如我所说,数据被传递到一个邮件类 我找到了这个巧妙的解决办法 output = io.StringIO() writer = csv.writer(output, delimiter=';', dialect='excel-tab') writer.writerows(data) 它工作得很好,只是它创建了一个UTF-8文件,如果在Excel中打开它,它会弄乱特殊字符 我试图将BOM表传递给String
output = io.StringIO()
writer = csv.writer(output, delimiter=';', dialect='excel-tab')
writer.writerows(data)
它工作得很好,只是它创建了一个UTF-8文件,如果在Excel中打开它,它会弄乱特殊字符
我试图将BOM表传递给StringIO
构造函数,但没有任何效果:
output = io.StringIO('\ufeff')
我试图以某种方式将编码设置为utf-8-sig
,但除了使用文件外,我找不到其他方法
有没有办法解决这个问题
谢谢 StringIO是表示unicode的字符串。要想做你想做的事,我想你需要用BytesIO来代替 阅读之后,我认为问题在于StringIO只是字符串,因此没有编码 你可以试试这个[从上面的第一个链接推断]:
bio = io.BytesIO()
StreamWriter = codecs.getwriter('utf-8-sig')
wrapper_file = StreamWriter(bio)
csv.writer(wrapper_file,...
writer.writerows(data)
Python字符编码让我头疼