python unicode csv使用金字塔导出
问题描述:
我试图将非ascii字符的mongodb导出为csv格式。 现在,我涉足金字塔和金字塔。反应。python unicode csv使用金字塔导出
from pyramid.response import Response
from mycart.Member import Member
@view_config(context="mycart:resources.Member", name='', request_method="POST", permission = 'admin')
def member_export(context, request):
filename = 'member-'+time.strftime("%Y%m%d%H%M%S")+".csv"
download_path = os.getcwd() + '/MyCart/mycart/static/downloads/'+filename
member = Members(request)
my_list = [['First Name,Last Name']]
record = member.get_all_member()
for r in record:
mystr = [ r['fname'], r['lname']]
my_list.append(mystr)
with open(download_path, 'wb') as f:
fileWriter = csv.writer(f, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL)
for l in my_list:
print(l)
fileWriter.writerow(l)
size = os.path.getsize(download_path)
response = Response(content_type='application/force-download', content_disposition='attachment; filename=' + filename)
response.app_iter = open(download_path , 'rb')
response.content_length = size
return response
在MongoDB中,第一个名字是显示王
,当我使用的打印,它也正显示出王
。然而,当我用Excel打开它时,它显示随机的东西 - CH 2 ...
然而,当我试着在shell中查看
$ more member-20130227141550.csv
它成功地正确显示非ASCII字符。
我应该如何解决这个问题?
答
我不是Windows的家伙,所以我不确定问题可能出在你的代码上,或者用excel只是不好处理非ascii字符。但我注意到你正在用python csv
模块编写你的文件,它是notorious for headaches with unicode。
其他用户报告成功使用unicodecsv
作为csv模块的替代品。也许你可以尝试在这个模块中作为一个csv作家,看看你的问题是否神奇地消失。
+0
是unicodecsv python3.2兼容吗? – Gino 2013-02-27 08:22:45
可能是你可以尝试在这[问题]中提到的东西(http://*.com/questions/4182603/python-how-to-convert-a-string-to-utf-8) – 2013-02-27 06:48:37
或者你也可以使用unicodecsv来完成这项工作,[unicodecsv](https://github.com/jdunck/python-unicodecsv),因为python的内部csv模块不支持unicode。 – 2013-02-27 07:01:07
Excel根据计算机的当前语言设置解释CSV文件。它不能识别UTF-8,而是会愉快地将数据解释为不同的编码。解决方案:将您的CSV编码定位到任何将要使用它的人。 – 2013-02-27 14:53:42