文字列オブジェクトを比較するリスト内包表記を使用しようとしていますが、文字列の 1 つが json.loads の副産物である utf-8 です。シナリオ:
us = u'MyString' # is the utf-8 string
私の質問のパート 1 は、なぜこれが False を返すのですか? :
us.encode('utf-8') == "MyString" ## False
パート 2 - リスト内包表記内で比較するにはどうすればよいですか?
myComp = [utfString for utfString in jsonLoadsObj
if utfString.encode('utf-8') == "MyString"] #wrapped to read on S.O.
編集: Python 2.7 を使用する Google App Engine を使用しています。
問題のより完全な例を次に示します。
#json coming from remote server:
#response object looks like: {"number1":"first", "number2":"second"}
data = json.loads(response)
k = data.keys()
I need something like:
myList = [item for item in k if item=="number1"]
#### I thought this would work:
myList = [item for item in k if item.encode('utf-8')=="number1"]