【问题标题】:Python 2 - ord() returning an incorrect valuePython 2 - ord() 返回不正确的值
【发布时间】:2020-05-18 18:48:50
【问题描述】:

这是我的文本文件 (sample.txt)。

É
Â
Ê
Î
Ç
Ô
È
Û
Ï
Ë
À
Ù
Ü

现在,当我调用 python 脚本来读取这些字符的 ord() 值时,我总是收到195。这是为什么呢?

file = open("C:\sample.txt", "r")
for line in file:
    print ord(line[0])
file.close()
195

ord() 值是这个字符:Ã,我在上述任何一行中都不存在。我期待在以下序列的输出中:

201, 194, 202, 206, 199, 212, 200, 219, 207, 203, 192, 217, 220.

【问题讨论】:

  • 仅供参考,但不再支持python 2,您应该切换到python 3。
  • @Xilpex 可能有帮助——对于 Python 3.7,ord('É') 是 201

标签: python utf-8 python-2.x non-ascii-characters ord


【解决方案1】:

你应该切换到 python 3;它解决了问题:

file = open("sample.txt", "r")
for line in file:
    print(ord(line[0]))
file.close()

打印出来:

201
194
202
206
199
212
200
219
207
203
192
217
220

正如预期的那样。

【讨论】:

  • 如果我被限制只能使用 python 2 怎么办? ord(line[1] + 64) 完成任务还是该语句中还有其他缺陷?好吧,让我对这类事情非常了解。
  • 顺便提一下,请注意 ord(line[0]) == 195 是在尝试上述类型的东西之前的另一个要求检查,通过使用它自己。
  • @V.Raman -- 如果您仅限于 python 2(您不应该这样做),那么您将不得不考虑解码文件。尝试打印line[0]。它不会正确打印。您必须找到编码,然后对其进行解码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 2016-10-09
相关资源
最近更新 更多