dict()Python用于外语

时间:2016-04-30 16:23:50

标签: python dictionary

我吼叫

mapper = {'А': 1, 'Б': 1}
mapper

mapper = {u'А': 1, u'Б': 1}
mapper

А,Б - 俄罗斯人的信件。 我们都有

{u'\u0410': 1, u'\u0411': 1}

Python 2.7

什么是正确的方法?感谢

1 个答案:

答案 0 :(得分:2)

如果您使用的是Python 3,则所有三种方法都是相同的。

使用Python 2,事情变得棘手。如果您使用第一种或第二种方法,则必须在文件顶部包含一个编码(在shebang行之后,如果你有一个),否则Python会抱怨你在代码中有非ASCII字符:

#!/usr/local/bin/python
# coding: utf-8

如果您使用第一种方法,您的unicode文本将使用UTF-8 编码

>>> mapper == {'\xd0\x90': 1, '\xd0\x91': 1}
True

如果您使用第二种方法,您的unicode文本将被解释为unicode文本:

>>> mapper == {u'\u0411': 1, u'\u0410': 1}
True

请注意,两者非常不同。一个是字节串,而另一个是文本:

>>> {'\xd0\x90': 1, '\xd0\x91': 1} == {u'\u0411': 1, u'\u0410': 1}
False

在任何一种情况下,使用字符转义序列或unicode文字都没有区别,因为它们代表相同的unicode字符:

>>> u'\u0411' == u'Б'
True

您可以通过在文件顶部声明字符编码并从unicode_literals包导入__future__来使Python 2的行为与Python 3类似:

#!/usr/local/bin/python
# coding: utf-8

from __future__ import unicode_literals

这将使您的代码在Python 2和Python 3中的工作方式类似。

相关问题