因为一个网页导出功能,这里已经反复让我提交了三次hotfix…确实与我自身有问题。很有必要整理一下。
第一次提交hotfix:
导出的时候会出现乱码,就进行一个转码encoding gb2312即可。
第二次提交hotfix:
csv是用英文的逗号来分割字段的,而如果字段里面包含英文逗号怎么办?就需要把这个字段两端用双引号引起来!
第三次提交hotfix:
很久都没有报错。但是没料到,有的名字字段里面有人用的是引号,然后数据就又出问题了。
我这个时候其实已经很无语了,只能说我的技术太渣。。。但是还是得解决。如果名字里面有“ 就再加一个,变成”“ 就可以了。
但是这次我没有这么做。因为老大告诉我了csv和stringIO的方法。
因为有一个模块叫做csv. csv里面创建一个writer对象之后有writerrow的方法。但是我查阅到的都是采用创建一个csv文件的方式。而根据我这里的业务需求是不需要创建文件的,这里直接用stringIO即可。但是csv这里还会引起一个报错问题,在python2下,需要通过sys.setdefaultencoding(“utf8”)来设置一下默认编码。
这里简单列下python的实现。
import sys
import StringIO
reload(sys)
sys.setdefaultencoding('utf8')
stream = StringIO.StringIO()
import csv
writer = csv.writer(stream)
search_data = [{'user_id': 10041L, 'name': u'\u65fa\u5f69a2acd7'},
{'user_id': 10041L, 'name': u'\u65fa\u5f69a2acd7'}]
stream = StringIO.StringIO()
writer = csv.writer(stream)
for info in search_data:
writer.writerow([[info["user_id"], info['name']])
print stream.getvalue()
参考:
http://blog.youkuaiyun.com/paul342/article/details/22800137
https://www.cnblogs.com/mayi0312/p/6840931.html
https://docs.python.org/2/library/csv.html#writer-objects
本文记录了在实现网页导出功能过程中遇到的CSV文件乱码、字段分割及特殊字符处理等问题,并分享了使用Python的csv和stringIO模块解决这些问题的具体步骤。
682

被折叠的 条评论
为什么被折叠?



