2016-01-13 51 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語法的情況下,正確地對您的測試字符串進行硬編碼)。

相關問題