2010-12-21 39 views
0

我正在阅读一个JSON字符串,里面充满了'串'风格的字符串。例如:如何在Python中将unicode字符串格式化为utf-8?

[ 
    { 
     "!\/award\/award_honor\/honored_for": { 
     "award": { 
      "id": "\/en\/spiel_des_jahres" 
     }, 
     "year": { 
      "value": "1996" 
     } 
     }, 
     "guid": "#9202a8c04000641f80000000003a0ee6", 
     "type": "\/games\/game", 
     "id": "\/en\/el_grande", 
     "name": "El Grande" 
    }, 
    { 
     "!\/award\/award_honor\/honored_for": { 
     "award": { 
      "id": "\/en\/spiel_des_jahres" 
     }, 
     "year": { 
      "value": "1995" 
     } 
     }, 
     "guid": "#9202a8c04000641f80000000000495ec", 
     "type": "\/games\/game", 
     "id": "\/en\/settlers_of_catan", 
     "name": "Settlers of Catan" 
    } 
    ] 

如果我指定了name = result.name。然后,当我将该值传递给一个Django模板时,它显示为u'Dominion'

如何将其格式化为显示为Dominion?

++ UPDATE ++

我认为这个问题有从列表或字典印刷价值的事情。例如:

result = freebase.mqlread(query) 

games = {} 
count = 0 
r = result[0] 
name = r.name 
games["name"] = name, 
self.response.out.write(games["name"]) 
self.response.out.write(name) 

此作为显示:

(u'Dominion',) // saved response to dictionary, and then printed 
Dominion  // when calling the value directly from the response 

我需要通过的JSON项目和值的数组来迭代被示出为具有二进制。为什么?

+0

我**强烈**怀疑这是您的实际JSON字符串... – 2010-12-21 00:33:05

+0

整个字符串更长。这是控制台打印的内容。我没有想到为这个问题的目的,有必要张贴原文,但我会更新。 – 2010-12-21 00:34:57

+0

我更感兴趣的是您复制值的位置和显示位置的代码。 – 2010-12-21 00:38:16

回答

1

games["name"] = name,末尾的逗号使其成为1元组。去掉它。

+0

我从键值对列表中剪切了n,因此是逗号。谢谢! – 2010-12-21 01:48:05

1
>>> # example 
>>> s = u"Jägermütze" 
>>> s.encode("utf-8") 
'J\xc3\xa4germ\xc3\xbctze' 
>>> print s.encode("utf-8") # on a utf-8 terminal 
Jägermütze 

不知道多少关于Django,但不接受snicode字符串似乎unpythonic给我。

+0

Django *会*取unicodes。这个问题不完整。 – 2010-12-21 00:33:43

0

您可以使用str(your string)来执行此操作。