我已经编写了一些代码来创建十六进制系统的所有 4 位组合,现在我正在尝试使用它来打印出与这些值关联的所有 unicode 字符。这是我用来执行此操作的代码:

char_list =["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]
pairs = []
all_chars = []

# Construct pairs list
for char1 in char_list:
    for char2 in char_list:
        pairs.append(char1 + char2)

# Create every combination of unicode characters ever
    for pair1 in pairs:
        for pair2 in pairs:
            all_chars.append(pair1 + pair2)

# Print all characters
for code in all_chars:
    expression = "u'\u" + code + "'"
    print "{}: {}".format(code,eval(expression))

这是我收到的错误消息:
Traceback (most recent call last): File "C:\Users\andr7495\Desktop\unifun.py",
line 18, in <module> print "{}: {}".format(code,eval(expression))
UnicodeEncodeError: 'ascii' codec can't encode character u'\x80' in position 0:
ordinal not in range(128)

当代码尝试打印 u"\u0080"时抛出异常,但是,我可以在交互式解释器中执行此操作而不会出现问题。

我试过将结果转换为 unicode 并指定忽略错误,但这没有帮助。我觉得我缺少对 unicode 工作原理的基本了解,但是我可以做些什么来让我的代码打印出所有有效的 unicode 表达式?

最佳答案

您正在尝试将 Unicode 字符格式化为字节字符串。您可以改用 Unicode 字符串来消除错误:

print u"{}: {}".format(code,eval(expression))
      ^

其他答案在简化原始问题方面做得更好,但是,您肯定是在以艰难的方式做事。

关于python - 在 Python 中打印所有 unicode 字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33043212/

10-15 20:40