重複の可能性:
Python で JSON から Unicode オブジェクトではなく文字列オブジェクトを取得する方法は?
JSON API 呼び出しから解析されたマルチレベル辞書として多くの入力があります。文字列はすべてユニコードであるため、多くのu'stuff like this'
. jqを使用して結果をいじっており、これらの結果を ASCII に変換する必要があります。
そのように変換するだけの関数を書くことができることを私は知っています:
def convert(input):
if isinstance(input, dict):
ret = {}
for stuff in input:
ret = convert(stuff)
elif isinstance(input, list):
ret = []
for i in range(len(input))
ret = convert(input[i])
elif isinstance(input, str):
ret = input.encode('ascii')
elif :
ret = input
return ret
これも正しいですか?わからない。聞きたいのはそこじゃないけど。
私が求めているのは、これが問題に対する典型的な力ずくの解決策だということです。もっと良い方法があるはずです。よりpythonicな方法。私はアルゴリズムの専門家ではありませんが、これも特に高速に見えません。
それで、より良い方法はありますか?または、そうでない場合、この機能を改善できますか...?
回答後の編集
Mark Amery の答えは正しいですが、修正版を投稿したいと思います。彼の関数は Python 2.7+ で動作し、私は 2.6 を使用しているため、変換する必要がありました。
def convert(input):
if isinstance(input, dict):
return dict((convert(key), convert(value)) for key, value in input.iteritems())
elif isinstance(input, list):
return [convert(element) for element in input]
elif isinstance(input, unicode):
return input.encode('utf-8')
else:
return input