Как отформатировать строки Unicode в UTF-8 в Python? - PullRequest
0 голосов
/ 21 декабря 2010

Я читаю в строке JSON, которая усеяна строками в стиле u'string.Пример:

 [
     {
      "!\/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"
    }
  ]

Если я назначу имя = результат.имя.Затем, когда я регистрирую передачу этого значения в шаблон Django, оно отображается как u'Dominion '

Как мне отформатировать его для отображения в виде Dominion?

++ ОБНОВЛЕНИЕ ++

Я думаю, что проблема связана с печатью значений из списка или словаря.Например:

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, и значения отображаются в Юникоде.Почему?

Ответы [ 3 ]

1 голос
/ 21 декабря 2010

Запятая в конце games["name"] = name, делает его 1-кортежем.Удалить его.

1 голос
/ 21 декабря 2010
>>> # 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 мне кажется неприличным.

0 голосов
/ 03 марта 2011

Вы можете использовать str(your string) для этого.

...