Python。相同的字符串出现不同的编码?
Python. Same string appearing with different encodings?
我有以下代码:
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']
的值时,我可以正确地看到所有字符。
但是,当我记录整个列表时,其数据显示不正确。
这是为什么?
您正在看到列表中字符串的 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
我有以下代码:
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']
的值时,我可以正确地看到所有字符。
但是,当我记录整个列表时,其数据显示不正确。
这是为什么?
您正在看到列表中字符串的 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