Python检查空CSV值失败
我有一个CSV文件,我正在运行一个脚本,把里面的数据插入到数据库中。如果某个值是空的,我就不想插入它。以下是我现在的代码:
if attrs[attr] != '' and attrs[attr] != None:
log.info('Attriute ID: %s' % attr)
log.info('Attriute Value: %s' % attrs[attr])
sql = insert_attr_query(attrs[attr], object_id, attr)
cursor.execute(sql)
如果这个值是空的,但它又不等于''(空字符串)或者None(没有值),那它到底等于什么呢?
3 个回答
1
在任何打算放入数据库的文本字符串中,你几乎总是应该规范化空白字符(或者用于其他很多目的)。
规范化空白字符就是要做以下三件事: (1) 去掉开头的空白 (2) 去掉结尾的空白 (3) 把中间连续的空白(长度大于等于1)替换成一个空格(U+0020)。
空白字符不应该仅仅局限于标准的Python提供的那些,特别是如果你在使用Python 2.X而没有使用unicode对象的时候。例如,在默认的"C"区域设置中,"\xA0"不会被当作空白字符,但它很可能代表的是不换行空格(U+00A0)。
以下是Python 2.X的示例代码:
def normalize_white_space_u(unicode_object):
return u' '.join(unicode_object.split())
def normalize_white_space_s(str_object):
return ' '.join(str_object.replace('\xA0', ' ').split())
对第二个函数进行一般化:把每个非标准空白字符替换成一个空格,然后再进行分割和连接的操作。
3
这里可能有空格。你可以通过打印 repr(attrs[attr])
来检查一下,这样会把内容用引号括起来,并且把制表符显示为 "\t"
把代码改成 if attrs[attr] is not None and attrs[attr].strip() !="":
这样写。
4
这可能是空白字符,也就是一个制表符或者是包含空格的字符串。你可以试试下面的代码:
attrs[attr].strip()