我有一個列表和一個值,並希望檢查值是否不在列表中。蟒蛇檢查值不是在unicode列表
list = [u'first record', u'second record']
value = 'first record'
if value not in list:
do something
然而,這並不工作,我認爲這是與具有啓動一個U中的列表值,我怎麼能解決這個問題?有人建議列表之前從Django的查詢集返回,所以我不能只是拿你出來的代碼:)的
感謝
我有一個列表和一個值,並希望檢查值是否不在列表中。蟒蛇檢查值不是在unicode列表
list = [u'first record', u'second record']
value = 'first record'
if value not in list:
do something
然而,這並不工作,我認爲這是與具有啓動一個U中的列表值,我怎麼能解決這個問題?有人建議列表之前從Django的查詢集返回,所以我不能只是拿你出來的代碼:)的
感謝
unicode(value)
將'first record'
轉換爲u'first record'
。這可能會解決您的問題。但是,根據內容的不同,這可能會失敗,您將不得不使用函數字符串具有的.encode('charset')
。
PS:你的例子很糟糕,因爲這些字符串在unicode和non-unicode中是相等的,因此你的例子工作正常。
我不明白爲什麼它不會工作:
s1 = 'hello'
s2 = u'hello'
s1 == s2 # True
是的,你是對的。我認爲它必須與django返回對象的方式有關,而不是Python邏輯 – John 2010-05-13 10:15:08
不要將列表命名爲list,因爲這會影響列表類/類型。 – ThiefMaster 2010-05-13 10:08:16
是的好點。在我的實際代碼中,我沒有這樣做,但它總是值得記住 – John 2010-05-13 10:12:17
「這不起作用」 - 所以它做了什麼?你還沒有發現問題是什麼。你已經完成了'unicode(arg)'而不是'arg'。這就像是說:「我們在火山向一隻死雞揮手,它停止噴發」。如果你給了我們一個有意義的例子,並說明「不工作」的含義,你可以得到一些有意義的幫助。 – 2010-05-13 22:01:40