作為從JSON API調用解析的多級字典,我有很多輸入.字符串都是unicode,這意味著有很多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