首页 > 解决方案 > 使用带有特殊字符的 dict 和 zip 的问题

问题描述

在这个程序中 zip() 似乎正在改变特殊字符,我怎样才能修复它以打印 € 两次?

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

d = dict(zip("a", "€"))
print(d["a"])
print("€")

输出

�
€

期望的输出

€
€

谢谢!编辑:Python 2.7.12

标签: python

解决方案


您可能正在运行默认不使用 unicode 的 Python 2.7。

在这种情况下使用

d = dict(zip("a", u"€"))

编辑:除非另有说明,否则 Python 2.7 将 ascii 用于字符串。Ascii 代码是一个 8 位代码,它不包括 € 符号。相反,您的文本编辑器可能使用包含 € 符号的 UTF-8 或 UTF-16。这意味着当您输入时:

print("€")

您看到 € 符号是因为您的文本编辑器支持它,但 python 解释器看到一个没有 € 符号的 ascii 字符串。因此,通过切换到 python 3,问题得到解决,因为 python 3 默认使用 unicode 作为字符串,解释器看到一个 unicode 字符串。在 python 2.7 中,通过在字符串前面加上“u”来使用 unicode。然后解释器看到一个 unicode 字符串并知道 € 符号。


推荐阅读