Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python西里尔字母编码输出_Python_Encoding_Output - Fatal编程技术网

Python西里尔字母编码输出

Python西里尔字母编码输出,python,encoding,output,Python,Encoding,Output,我刚刚开始学习python,我正在为字典做练习,但是由于我必须使用的示例代码是西里尔文的,所以我遇到了一些编码问题。我有以下代码: #!/usr/bin/env python # -*- coding: utf-8 -*- temperatures = { 'София': -14, 'Новосибирск': -31 } print("-" * 20) print(temperatures) print("-" * 20) key = 'Бургас' if key

我刚刚开始学习python,我正在为字典做练习,但是由于我必须使用的示例代码是西里尔文的,所以我遇到了一些编码问题。我有以下代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

temperatures = {
    'София': -14,
    'Новосибирск': -31
}

print("-" * 20)
print(temperatures)

print("-" * 20)

key = 'Бургас'
if key in temperatures:
    print(temperatures[key])
else:
    print("No data for {}".format(key))
在添加
#-*-编码:utf-8-*-
行之前,我得到了语法错误:非ASCII字符'\xd0'。然而,现在错误消失了,但是西里尔文中的单词输出不正确。这是输出:

--------------------
{'\xd0\x9d\xd0\xbe\xd0\xb2\xd0\xbe\xd1\x81\xd0\xb8\xd0\xb1\xd0\xb8\xd1\x80\xd1\x81\xd0\xba': -31, '\xd0\xa1\xd0\xbe\xd1\x84\xd0\xb8\xd1\x8f': -14}
--------------------
No data for Бургас

因此,从python dict打印出来的西里尔文单词被弄乱了,但行
БББББПГаС
显示正确。我尝试使用
打印(格式(温度))
但输出是相同的。如果它打印出一个西里尔文单词,它不应该打印所有单词吗?

对不起,现在还不能评论:您的代码适合我(arch linux上的emacs)


编辑:我的默认python解释器是Python3.6,它获得的输出与Python2.7相同。Python 2.7是一种需求吗?

假设您使用Python 2,这里的输出与预期一样:

  • 打印字符串时,将直接打印该字符串
  • 打印字典时,键(和值)将按使用
    repr
    而不是
    str
    打印的方式打印。这就解释了为什么所有代码点超过255的字符都使用转义形式
如果要在Python 2中显示词汇表,必须手动执行:

h = temperatures
print('{' + ', '.join((str(k)+ ': ' + str(h[k]) for k in h.keys())) + '}')