2016-01-13 35 views
0

我拉我的头发与示例语句。我的代码是这样的。在运算符不工作,因为我期望与字符串列表

Test2 = selector2.xpath('string(//div[@class="js-shipping-slide-panel shipping-slide-panel-section product-buying-table-row-alt"])').extract() 
print "Test2", Test2 

我得到的输出:

Test2 [u' Shipping not available  \n  Shipping This item is not  available for shipping. \n'] 

这是完美的。所以这里是我的示例如果我试图陈述

if "shipping" in Test2: 
    print "Found it" 
else: 
    print "It's Not There" 

我得到的结果它不存在。我甚至复制的输出和硬编码的Test2是

Test2 = "u' Shipping not available  \n  Shipping This item is not  available for shipping. \n'" 

和if语句的运行同样和它的工作,让我的“发现”的结果。我在这里错过了什么?谢谢。

+0

此外,我想使用Test2.lower,并说如果“运送不可用”,那么....等等......试图以任何顺序匹配所有3个单词或将它必须是一个完全匹配确切的顺序?谢谢。 – Nick

+0

您的第一个示例输出是列表中的一个字符串,您的硬编码输出只是字符串。要检查示例输出中的字符串,您需要执行以下操作:'如果在Test2 [0]中运输“:'在字符串中检查而不是检查字符串'shipping'是否在列表中 – Marius

回答

1

您可以在输出中看到Test2不是字符串。它是一个包含字符串的列表。尝试if "shipping" in Test2[0]。 (如果xpath查询返回多个结果,您还应该考虑要执行的操作。)

+0

你们真棒。我喜欢它,当它是简单的时候....现在我必须等待11分钟才能接受答案。我在等待期间对第二个问题有什么想法? – Nick

+0

思考如果xpath返回多个结果,该怎么办?思考它之后在StackOverflow上打开另一个问题,如果还有问题,请尝试处理它。 – msw

0

您有一个单例list。这意味着您必须检查'shipping'是否在list的第一个元素中。

if "shipping" in Test2[0]: 

你的其他测试是检查整个字符串,包括额外的包围引号是不实际的原始字符串的一部分,是否在list,其中,当然,事实并非如此。该list您检查包含不包含包围引号的字符串:

"u' Shipping not available  \n  Shipping This item is not  available for shipping. \n'" 

u' Shipping not available  \n  Shipping This item is not  available for shipping. \n' 

原字符串的第一个字符是字母u。后一个字符串的第一个字符是空格字符,。您必须将前一个字符串发送到像ast.literal_eval()这样的解析器才能生成后一个字符串(但要正确执行的操作是在考虑Python语法的情况下,正确地对您的测试字符串进行硬编码)。

相关问题