jmd*_*_dk 3 python unicode python-3.x python-unicode
在编写Python 3代码时,我在变量名中使用Unicode文字使我很高兴。今天我有一个奇怪的错误,原来是由于Python无法区分变量?和?,如下面的短代码所示:
? = 'hello'
? = 'goodbye'
print(?) # Prints 'goodbye'
Run Code Online (Sandbox Code Playgroud)
这是错误还是功能?如果是后者,我如何/在哪里可以找到以这种方式一起属于所有这些字符的集合?
在?和?在字符串中使用时,不存在这种区别:
a = '?'
b = '?'
print(a == b) # Prints False
Run Code Online (Sandbox Code Playgroud)
这使我确信这不是我的编辑器/终端的编码问题。
我们还可以使用以下unicodedata模块来确认Python完全了解我们正在处理的字符:
import unicodedata
print(unicodedata.name('?')) # Prints 'GREEK SMALL LETTER RHO'
print(unicodedata.name('?')) # Prints 'GREEK RHO SYMBOL'
Run Code Online (Sandbox Code Playgroud)
我在?(GREEK SMALL LETTER PHI)和?(GREEK PHI SYMBOL)之间发现了相同的行为。
解析时,所有标识符都转换为标准形式NFKC;标识符的比较基于NFKC。
>>> unicodedata.normalize('NFKC', '??')
'??'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |