unicoded python string''没有返回空

时间:2013-02-01 23:16:27

标签: python unicode-string is-empty

不确定这是一个新手的错误还是简单的愚蠢,但我正面临着这个奇怪的问题。我有一个声明为classifier = u"''"的单字符串,我正在检查它是否空虚。 以下代码块:

if classifier: 
   # do something
else:
   # else do something else
由于嵌入了''

将会触及else块。我无法控制源生成分类器字符串。

只有当分类器可以某种方式被操作以返回嵌入式''时,我才能检查classifier的空虚,但不确定如何。如果有任何帮助classifier是从HttpRequest对象classifier = request.GET.get('c', '')收集的。

编辑:

classifier[1:-1]返回u'',现在可以检查空虚。可以使用的任何内置方法吗?

我现在将采用这种方法。但如果有任何其他高级指针,请将帖子打开。

感谢,

3 个答案:

答案 0 :(得分:2)

你可以这样做:

if classifier.strip("'"): 
   # do something
else:
   # else do something else

答案 1 :(得分:1)

if len(classifier) > 2:
    # do something
else:
    # do something else

答案 2 :(得分:1)

在决定如何解析数据之前,您必须真正了解数据的含义。只是随机攻击它直到它为一个例子工作是没有帮助。

所以,你从URL中获取字符串,它看起来像这样:

  

HTTP:///一个行家=&安培; V =&1.1.0放大器;分类= '' &安培; Af - Ag型= POM

通常情况下,在提供网址时,正确的做法是致电urlparse.urlparse,然后致电query上的urlparse.parse_qs。但这实际上并没有帮助,因为这实际上并不是一个有效的URL。

嗯, 是一个有效的网址,但它是一个路径为<someurl>/a=maven&v=1.1.0&classifier=''&ttype=pom的网址,而不是一个路径为<someurl>/且网址为a=maven&v=1.1.0&classifier=''&ttype=pom的网址。您需要?来设置查询。

而且,最重要的是,查询显然没有正确生成。您不在查询中引用空字符串。你没有引用任何东西(你实体转义&符号和百分比转义任何其他特殊字符)。因此,除非URL字面意思是分类符是''而不是空字符串,否则它是错误的。

而且,如果没有错,你就不会问这些问题。

如果您可以控制如何生成这些URL,显然您希望修复此问题。如果你无法控制它,但至少知道它们是如何生成的,你可以编写代码来反转它以获得原始值。但如果你甚至不知道,你必须猜测。

理想情况下,你需要不止一个例子来猜测。他们是引用空字符串,还是引用字符串,例如引用"个字符或空格或符号的字符串?如果是后者,你可能只是strip("'"),但如果它是前者,那么在原始数据实际上有引号的情况下这将是不正确的。