我的代码中的问题如下所示:

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

deg = u'°'
print deg
print '40%s N, 100%s W' % (deg, deg)
codelim = raw_input('40%s N, 100%s W)? ' % (deg, deg))

我正在尝试为纬度/经度字符串中的分隔符生成一个 raw_input 提示,并且该提示应包含此类字符串的示例。 print degprint '40%s N, 100%s W' % (deg, deg) 都可以正常工作——它们分别返回“°”和“40° N,100° W”——但是 raw_input 步骤每次都失败。我得到的错误如下:
Traceback (most recent call last):
  File "C:\Users\[rest of the path]\scratch.py", line 5, in  <module>
    x = raw_input(' %s W")? ' % (deg))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 1:
ordinal not in range(128)

我以为我已经按照 here 的指示通过添加编码 header 解决了这个问题(实际上这确实可以打印度数符号),但是一旦我添加了其他内容,我仍然会收到 Unicode 错误- raw_input 的安全字符串。这里发生了什么?

最佳答案

尝试将提示字符串编码为 stdout s 编码,然后再将其传递给原始输入

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

import sys

deg = u'°'

prompt = u'40%s N, 100%s W)? ' % (deg, deg)
codelim = raw_input(prompt.encode(sys.stdout.encoding))

关于python - 无法将度数符号输入 raw_input,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28246004/

10-12 22:13