Python: проблемы с кодировкой - PullRequest
0 голосов
/ 29 октября 2011

Я сохраняю свои данные в словаре, и после сохранения в словаре я распечатал данные, чтобы увидеть, как они выглядят, и я вижу Unicode:

(u'520775', [[u'Kategori:2. divisjon fotball for herrer 2008']])
(u'754686', [[u'Kategori:Debutalbum', u'Kategori:Musikkalbum fra 1990', u'Kategori:Tre Sm\xe5 Kinesere-album']])
(u'381191', [[u'Kategori:Serierundene i Adeccoligaen 2007']])
(u'972597', [[u'Kategori:Tippeligaen 2011']])
(u'263001', [[u'Kategori:Musikkalbum fra 2003']])
(u'23037', [[u'Kategori:Luftforsvaret']])
(u'640060', [[u'Kategori:Deltagermedaljen', u'Kategori:F\xf8dsler i 1923', u'Kategori:Norske folkemusikere', u'Kategori:Norske trekkspillere', u'Kategori:Paul Harris Fellow', u'Kategori:Personer fra Vefsn kommune']])

У меня есть следующий код, я использовал опцию форматирования, но она не сработала. Что меня также смущает, так это то, что когда я печатаю идентификатор перед сохранением в словаре, я вижу его без целого числа.

Вот сегмент кода,

for (pageId, pageData) in data['query']['pages'].iteritems():
            categoryTitles = [];
            idTitleDictionary[pageId] = [];
            print pageId;
            try:
                for category in pageData['categories']:
                    categoryTitles.append(category['title']);
                idTitleDictionary[format(pageId)].append(categoryTitles);

Я пытаюсь понять, как кодировать его перед сохранением в словаре.

1 Ответ

1 голос
/ 29 октября 2011

Когда вы print a dict, или list, или tuple, repr вызывается для элементов в контейнере, а не str, как когда вы print обращаетесь к ним напрямую, так Вы видите escape-коды Unicode.

Если бы вы были

mydict = dict(((u'520775', [[u'Kategori:2. divisjon fotball for herrer 2008']]),
(u'754686', [[u'Kategori:Debutalbum', u'Kategori:Musikkalbum fra 1990', 
              u'Kategori:Tre Sm\xe5 Kinesere-album']]),
(u'381191', [[u'Kategori:Serierundene i Adeccoligaen 2007']]),
(u'972597', [[u'Kategori:Tippeligaen 2011']]),
(u'263001', [[u'Kategori:Musikkalbum fra 2003']]),
(u'23037', [[u'Kategori:Luftforsvaret']]),
(u'640060', [[u'Kategori:Deltagermedaljen', u'Kategori:F\xf8dsler i 1923', 
              u'Kategori:Norske folkemusikere', 
              u'Kategori:Norske trekkspillere', u'Kategori:Paul Harris Fellow', 
              u'Kategori:Personer fra Vefsn kommune']])))

for key, value in mydict.iteritems():
    print key,
    for elem in value[0]:
        print elem + ',',
    print

Вы увидите строки, правильно закодированные для вашего терминала. Вам не нужно ничего делать с этими строками, чтобы интерпретировать управляющие коды - все хранится правильно, это только то, как оно отображается.

...