首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Cyrillic编码输出

Python Cyrillic编码输出
EN

Stack Overflow用户
提问于 2017-02-22 13:36:53
回答 2查看 190关注 0票数 0

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

代码语言:javascript
复制
#!/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’。然而,现在,错误已经消失,但西里尔词的输出却是不正确的。这是输出:

代码语言:javascript
复制
--------------------
{'\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)),但是输出是相同的。如果它打印出一个西里尔词,难道不应该全部打印出来吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-22 14:00:48

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

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

票数 0
EN

Stack Overflow用户

发布于 2017-02-22 14:31:54

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

  • 当您打印字符串时,将直接打印它。
  • 打印字典时,使用repr而不是str打印的键(和值)。这解释了为什么所有代码点超过255的字符都使用它们的转义形式。

如果要在Python 2中显示字典,则必须手动进行。

代码语言:javascript
复制
h = temperatures
print('{' + ', '.join((str(k)+ ': ' + str(h[k]) for k in h.keys())) + '}')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42393029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档