不确定这是一个新手的错误还是简单的愚蠢,但我正面临着这个奇怪的问题。我有一个声明为classifier = u"''"
的单字符串,我正在检查它是否空虚。
以下代码块:
if classifier:
# do something
else:
# else do something else
由于嵌入了''
,将会触及else块。我无法控制源生成分类器字符串。
只有当分类器可以某种方式被操作以返回嵌入式''
时,我才能检查classifier
的空虚,但不确定如何。如果有任何帮助classifier
是从HttpRequest
对象classifier = request.GET.get('c', '')
收集的。
编辑:
classifier[1:-1]
返回u''
,现在可以检查空虚。可以使用的任何内置方法吗?
我现在将采用这种方法。但如果有任何其他高级指针,请将帖子打开。
感谢,
答案 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("'")
,但如果它是前者,那么在原始数据实际上有引号的情况下这将是不正确的。