2016-03-22 7 views
0

ASCIIでリストをエンコードしたいと思います。PythonでASCII形式のリストを符号化する

マイリスト:

data = {u'ismaster': True, u'maxWriteBatchSize': 1000, u'ok': 1.0, u'maxWireVersion': 3, u'minWireVersion': 0} 

私の目標:

data = {'ismaster': True, 'maxWriteBatchSize': 1000, 'ok': 1.0, 'maxWireVersion': 3, 'minWireVersion': 0} 

は現在、私はこれを行う:私はこの方法でいくつかの値を失った Website to convert a list of strings

>>>data_encode = [x.encode('ascii') for x in data] 
>>>print(data_encode) 
['maxWireVersion', 'ismaster', 'maxWriteBatchSize', 'ok', 'minWireVersion'] 

を参照してください。

+1

「データ」 'list'ではなく' dict'です – Hacketo

+0

なぜあなたはこれを望みますか?あなたの文字列をUnicode( 'u '...''接頭辞)にするのは良いことです。 – tripleee

+0

データベースに挿入するのは – user6066403

答えて

4

実際のリストに変換していますが、当初は辞書を持っていたからです。あなたはlist comprehensionを使用していた

data = {key.encode("ascii"): value for key, value in data.items()} 

、しかし、あなたが望むことはdict理解だった。ただ、これを行います。

+0

Thxです! – user6066403

0

文字列の値の前にある「u」は、文字列がunicodeと表されていることを意味します。通常のASCIIより多くの文字を表現する方法です。あなたはまだそれをしたい場合は、あなたの辞書に特殊文字u'\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439'

asciirep = strangeKey.encode("ascii") 

として表さ

strangeKey = u'Ознакомьтесь с документацией' 

が含まれている場合は、問題になってしまいます

は、このエラー

SyntaxError: Non-ASCII character '\xd0' in ... 

を発生させます、ただし、いくつかの例外を発生させる危険性がある場合は、以下を使用できます

はPython 2.6でd = {key.encode("ascii"): value for (key, value) in data.items()}

  • およびそれ以前、あなたはdictのコンストラクタを使用する必要があります。

    • のPython 2.7から

      以降3、あなただけの直接のdictの理解の構文を使用することができます

      d = dict((key.encode("ascii"), value) for (key, value) in data.items())

  • 関連する問題