Python 检查空白 CSV 值不起作用

发布于 2024-08-23 07:41:45 字数 375 浏览 5 评论 0原文

我有一个 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,那么它 =?

I have a CSV file and I am running a script against it to insert into a database.
If the value is blank then I don't want to insert it. Here is what I have

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)

It's blank and it doesn't = '' or None, then wth does it =?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一抹微笑 2024-08-30 07:41:45

它可能是空格,即带有空格的制表符或字符串尝试:-

attrs[attr].strip()

It's probably whitespace i.e. a tab or string with spaces try:-

attrs[attr].strip()
赏烟花じ飞满天 2024-08-30 07:41:45

据推测它包含空格。您可以通过打印 repr(attrs[attr]) 来检查这一点,它将在其周围加上引号并在“\t”处显示选项

卡 将代码更改为 if attrs[attr] 不是 None 并且attrs[attr].strip() !="":

Presumably it contains whitespace. You could check this by printing repr(attrs[attr]) which will put quotes round it and show tabs at "\t"

Change the code to if attrs[attr] is not None and attrs[attr].strip() !="":

一身骄傲 2024-08-30 07:41:45

您应该(几乎)始终规范要插入数据库(或用于许多其他目的)的任何文本字符串中的空格。

规范化空白的方法是 (1) 去除任何前导空白 (2) 去除任何尾随空白 (3) 将任何内部空白(长度 >= 1)替换为 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())

概括第二个函数:将每次出现的非标准空白字符替换为单个空格,然后进行拆分连接舞蹈。

You should (almost) always normalise whitespace in any text string that is intended for insertion in a database (or for many other purposes).

To normalise whitespace is to (1) strip any leading whitespace (2) strip any trailing whitespace (3) replace any internal runs (length >= 1) of whitespace by exactly 1 SPACE (U+0020).

Whitespace should not be limited to what standard Python provides, especially if you are working in Python 2.X and not using unicode objects. For example, in the default "C" locale, "\xA0" is not treated as whitespace but it's very likely to represent NO-BREAK SPACE (U+00A0).

Sample code for 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())

Generalizing the second function: replace each occurrence of a non-standard whitespace character by a single space and then do the split-join dance.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文