小张的学习笔记

关于python写入文件时的报错: Error: need to escape, but no escapechar set

    最近在使用python的csv模块写入文件时,报错:

Error: need to escape, but no escapechar set

    基本可以确定,程序的主体结构是没有问题的,因为打印的每个字段内容都是正常输出的,只有当写入csv时才会报这个错。

    但写入的字段由于层层封装包含很多内容,为了查清楚原因,干脆把十几个字段内容都逐个注释,查看输入到csv里面的情况,但不管怎么打印,内容看起来都似乎毫无异常,直到查看数据库内容才发现一个可能的异常:

[{"name_cn": "銀行集團", "name_en": "\u0000", "change_date": "2012-07-01"}, {"name_cn": "", "name_en": "Australia Banking Limited", "change_date": "2010-10-13"}]

    这里面的字符串有一个"\u0000", \u0000是一个Unicode码的字符,每一个'\u0000'都代表了一个空格。也就是说这个字段的内容应当是一个空格,但因为数据进入数据库时因为没有做清洗写入了\u0000,导致该数据的写入一直报错,并且该字符使用print打印时是空白的,至少从肉眼上来看是这样。

    加一个判断即可:

if not fields or fields == "\u0000":
    pass

    在程序中是可以拿到这个字符串的,只是html页面上渲染的是空格。