0

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

if classifier: 
   # do something
else:
   # else do something else

因为有''嵌入,所以会碰到 else 块。我无法控制源生成分类器字符串。

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

编辑:

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

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

谢谢,

4

3 回答 3

2

你可以这样做:

if classifier.strip("'"): 
   # do something
else:
   # else do something else
于 2013-02-01T23:39:25.097 回答
1
if len(classifier) > 2:
    # do something
else:
    # do something else
于 2013-02-01T23:39:51.807 回答
1

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

因此,您从 URL 中获取字符串,它看起来像这样:

http:///a=maven&v=1.1.0&classifier=''&ttype=pom

通常,当给定一个 URL 时,正确的做法是调用然后urlparse.urlparse调用urlparse.parse_qs. query但这实际上并没有帮助,因为这实际上不是一个有效的 URL。

好吧,它一个有效的 URL,但它是一个带有 path 的 URL,而<someurl>/a=maven&v=1.1.0&classifier=''&ttype=pom不是一个带有 path<someurl>/和 query的 URL a=maven&v=1.1.0&classifier=''&ttype=pom。您需要一个?来触发查询。

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

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

如果您对这些 URL 的生成方式有任何控制权,那么显然您希望得到修复。如果您无法控制它,但至少知道它们是如何生成的,您可以编写代码来反转它以获得原始值。但如果你连这一点都不知道,你就不得不猜测。

理想情况下,您需要不止一个示例来猜测。它们是仅引用空字符串,还是也引用带有"字符或空格或与号的字符串?如果是后者,您可能只是strip("'"),但如果是前者,则在原始数据实际上有引号的任何情况下都是不正确的。

于 2013-02-02T00:16:43.683 回答