蟒蛇。出现不同编码的相同字符串?

时间:2015-02-02 16:00:23

标签: python character-encoding

我有以下代码:

students_list = []

for student in students:

    student_dict = {}

    dict_student['nane'] = name
    logger.info(student_dict['name'])
    # prints ==> MÓNICA MENÉNDEZ GALLEGOS

    dict_student['address'] = address
    logger.info(student_dict['address'])
    # prints ==> GENERAL YAGÜE 32

    students_list.append(dict_student)

logger.info(students_list)
# prints => [{'name':u'M\xd3NICA MEN\xc9NDEZ GALLEGOS', 'address': u'GENERAL YAG\xdcE 32}

如您所见,这是一段非常简单的代码。我得到一个值,将其分配给字典并将所述字典附加到列表中。

令我烦恼的是,当我记录student_dict['name']的值时,我可以正确地看到所有字符。

但是,当我记录整个列表时,其数据无法正确显示。

为什么会这样?

1 个答案:

答案 0 :(得分:3)

您看到列表中字符串的repr表示形式:

[{'name':u'M\xd3NICA MEN\xc9NDEZ GALLEGOS', 'address': u'GENERAL YAG\xdcE 32}

打印时,您会看到str输出。

它们都是相同的unicode字符串:

In [1]: (l[0]["address"]) 
Out[1]: u'GENERAL YAG\xdcE 32'
In [2]: (l[0]["address"]) == u"GENERAL YAGÜE 32"
Out[2]: True