【问题标题】:How to get the Unicode character from a code point variable? [duplicate]如何从代码点变量中获取 Unicode 字符? [复制]
【发布时间】:2018-12-17 08:20:45
【问题描述】:

我有一个存储字符串"u05e2" 的变量(该值不断变化,因为我将它设置在一个循环中)。我想用那个 Unicode 值打印希伯来字母。我尝试了以下方法,但没有成功:

>>> a = 'u05e2'
>>> print(u'\{}'.format(a))

我得到的是\u05e2 而不是ע(在这种情况下)。

我也尝试过:

>>> a = 'u05e2'
>>> b = '\\' + a
>>> print(u'{}'.format(b))

两者都不起作用。我该如何解决这个问题?

提前致谢!

【问题讨论】:

  • 那里建议的解决方案对我有用。谢谢!
  • 那个 SO 答案指向需要显式 unicode 转换的 Python 2.7 解决方案。在 Python 3 中,这是内置在 str() 中的,应该可以开箱即用。

标签: python python-3.x unicode hebrew


【解决方案1】:

这似乎是X-Y Problem。如果您想要 Unicode 字符作为代码点,请使用整数变量和函数 chr(或 Python 2 上的 unichr),而不是尝试格式化转义码:

>>> for a in range(0x5e0,0x5eb):
...  print(hex(a),chr(a))
...
0x5e0 נ
0x5e1 ס
0x5e2 ע
0x5e3 ף
0x5e4 פ
0x5e5 ץ
0x5e6 צ
0x5e7 ק
0x5e8 ר
0x5e9 ש
0x5ea ת

【讨论】:

    【解决方案2】:

    您只需要在u05e2 之前添加一个\。要打印 Unicode 字符,您必须提供 unicode 格式字符串。

    a = '\u05e2'
    print(u'{}'.format(a))
    
    #Output
    ע
    

    当您通过在print() 函数中打印\ 来尝试其他方法时,Python 首先转义\ 并且不显示所需的结果。

    a = 'u05e2'
    print(u'\{}'.format(a))
    
    #Output
    \u05e2
    

    验证 Unicode 格式字符串有效性的一种方法是使用 Python 标准库中的 ord() 内置函数。这将返回传递给它的字符的 Unicode 代码点(整数)。此函数只需要 Unicode 字符或表示 Unicode 字符的字符串。

    a = '\u05e2'
    print(ord(a)) #1506, the Unicode code point for the Unicode string stored in a
    

    要打印上述 Unicode 代码值 (1506) 的 Unicode 字符,请使用带有c 的字符类型格式。这在Python docs 中有解释。

    print('{0:c}'.format(1506))
    
    #Output
    ע
    

    如果我们将一个普通的字符串文字传递给ord(),我们会得到一个错误。这是因为此字符串不代表 Unicode 字符。

    a = 'u05e2'
    print(ord(a))
    
    #Error
    TypeError: ord() expected a character, but string of length 5 found
    

    【讨论】:

      【解决方案3】:

      发生这种情况是因为您必须在字符串之外添加后缀 u

      a = u'\u05e2'
      print(a)
      ע
      

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-24
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多