2010-05-13 75 views
0

我有一個列表和一個值,並希望檢查值是否不在列表中。蟒蛇檢查值不是在unicode列表

list = [u'first record', u'second record'] 
value = 'first record' 

if value not in list: 
    do something 

然而,這並不工作,我認爲這是與具有啓動一個U中的列表值,我怎麼能解決這個問題?有人建議列表之前從Django的查詢集返回,所以我不能只是拿你出來的代碼:)的

感謝

+6

不要將列表命名爲list,因爲這會影響列表類/類型。 – ThiefMaster 2010-05-13 10:08:16

+0

是的好點。在我的實際代碼中,我沒有這樣做,但它總是值得記住 – John 2010-05-13 10:12:17

+0

「這不起作用」 - 所以它做了什麼?你還沒有發現問題是什麼。你已經完成了'unicode(arg)'而不是'arg'。這就像是說:「我們在火山向一隻死雞揮手,它停止噴發」。如果你給了我們一個有意義的例子,並說明「不工作」的含義,你可以得到一些有意義的幫助。 – 2010-05-13 22:01:40

回答

2

unicode(value)'first record'轉換爲u'first record'。這可能會解決您的問題。但是,根據內容的不同,這可能會失敗,您將不得不使用函數字符串具有的.encode('charset')

PS:你的例子很糟糕,因爲這些字符串在unicode和non-unicode中是相等的,因此你的例子工作正常。

+0

是的,我同意。我使用的代碼是從Django模型返回的,但我不想包含所有這些額外的東西,所以試圖縮短到只是Python代碼它,但就像你在我的例子中說,它會工作。 – John 2010-05-13 10:18:00

+0

添加unicode(值)工作。謝謝。 – John 2010-05-13 10:20:09

3

我不明白爲什麼它不會工作:

s1 = 'hello' 
s2 = u'hello' 
s1 == s2 # True 
+0

是的,你是對的。我認爲它必須與django返回對象的方式有關,而不是Python邏輯 – John 2010-05-13 10:15:08