如果我有一个像这样的对象:
d = {'a':1, 'en': 'hello'}
...然后我可以将其传递给type(),没问题:
percent_escaped = urlencode(d)
print percent_escaped
但是,如果我尝试传递值类型为type()的对象,则游戏结束:
d2 = {'a':1, 'en': 'hello', 'pt': u'olá'}
percent_escaped = urlencode(d2)
print percent_escaped # This fails with a UnicodeEncodingError
所以我的问题是有关准备传递给type()的对象的可靠方法。
我想到了这个函数,在其中我简单地遍历对象并编码string或unicode类型的值:
def encode_object(object):
for k,v in object.items():
if type(v) in (str, unicode):
object[k] = v.encode('utf-8')
return object
这似乎可行:
d2 = {'a':1, 'en': 'hello', 'pt': u'olá'}
percent_escaped = urlencode(encode_object(d2))
print percent_escaped
然后输出type(),准备传递给POST调用或其他任何东西。
但是我的type()函数对我来说真的很不稳定。 一方面,它不处理嵌套对象。
另一方面,我对if语句感到紧张。 我还应该考虑其他类型吗?
并将这种东西type()与本机对象进行比较,就像这样的好习惯吗?
type(v) in (str, unicode) # not so sure about this...
谢谢!
