python - 使用带有特殊字符的 dict 和 zip 的问题
问题描述
在这个程序中 zip() 似乎正在改变特殊字符,我怎样才能修复它以打印 € 两次?
#!/usr/bin/python
# -*- coding: utf-8 -*-
d = dict(zip("a", "€"))
print(d["a"])
print("€")
输出
�
€
期望的输出
€
€
谢谢!编辑:Python 2.7.12
解决方案
您可能正在运行默认不使用 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 字符串并知道 € 符号。
推荐阅读
- android - 从另一个 Activity/Class kotlin 读取 SQL 数据
- python - Python中图中的列数据错误
- c# - 用于连接到 Rest Web 服务的 HttpWebRequest 在控制台上有效,但在 .net core 3.1 中的 Web 应用程序上无效
- node.js - GKE REST/Node API 调用以获取池中的节点数?
- javascript - 如何使用 nvim 本机 lsp 摆脱特定的 tsserver 错误?
- python - lask.cli.NoAppException:在导入“app”时,引发了 ImportError:
- jwt - JWT 密钥轮换
- asp.net-core - Asp.net core 通过modelBuilder.Entity添加软删除
()。财产 (“已删除”);但 isDeleted 作为复合键 - sql-server - 有什么方法可以从 EF Core 获得比“数据为 Null。无法在 Null 值上调用此方法或属性”更具体的错误?
- nuxt.js - Nuxt:无法从 js 文件访问 vuex 存储