Python Unicode ... словарь - PullRequest
       1

Python Unicode ... словарь

1 голос
/ 20 февраля 2012
filename = "dict.json" 

def read_dict(filename):
    file = open( script_dir + filename )
    dict = json.load( file )
    file.close()
    return dict

 def test(dict):
   key = raw_input("enter key: ")
   for element in dict:
     while key in element:
       print element
       key = raw_input("key taken, try again: ")
   val = raw_input("enter val: ")
   new_element = {key:val}

   #lets get some clear output
   print new_element 
   print key
   dict.append(new_element)
        print dict
        #return dict


test(read_dict(filename))  

Вывод:

^_^ python newnor.py
enter key: både
enter val: both
{'b\xc3\xa5de': 'both'}
både
[{u'foo': u'bar'}, {u'moo': u'mar'}, {'b\xc3\xa5de': 'both'}]

Я уже настроил панель foo и moo mar ... но меня смущает то, почему, когда я печатаю свой ключ, это нормальнострока, но потом, когда я создаю словарь (new_element), он становится фантом юникода ...

Я попытался поиграть с str () и unicode (), но пока не получилось.Любые идеи?

edit:

пробовал это:

import sys

def key():
    k = raw_input()
    k = k.decode(sys.stdin.encoding)
    element = {k:"bar"}
    print element

key()

termianl:

^_^ python qtest.py 
både
{u'b\xe5de': 'bar'}

так что по крайней мере есть u infrontоб этом ...

1 Ответ

0 голосов
/ 20 февраля 2012

Вход кодируется в кодировке системы. Вам нужно будет расшифровать его перед использованием.

s = s.decode(sys.stdin.encoding)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...