我刚开始学习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))在添加# -*- coding: utf-8 -*-行之前,我得到了SyntaxError: Non字符‘\xd0 0’。然而,现在,错误已经消失,但西里尔词的输出却是不正确的。这是输出:
--------------------
{'\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中打印出来的Cyrillic中的单词是错误的,但是行Бургас看起来是正确的。我尝试使用print(format(temperatures)),但是输出是相同的。如果它打印出一个西里尔词,难道不应该全部打印出来吗?
发布于 2017-02-22 14:00:48
对不起,还不能评论:您的代码适合我( arch linux上的emacs)。
编辑:我的默认python解释器是Python3.6,它获得与Python2.7相同的输出。Python2.7是必需的吗?
发布于 2017-02-22 14:31:54
假设您使用Python 2,这里的输出与预期的一样
repr而不是str打印的键(和值)。这解释了为什么所有代码点超过255的字符都使用它们的转义形式。如果要在Python 2中显示字典,则必须手动进行。
h = temperatures
print('{' + ', '.join((str(k)+ ': ' + str(h[k]) for k in h.keys())) + '}')https://stackoverflow.com/questions/42393029
复制相似问题