【问题标题】:Can Unicode characters be programmatically defined in python 3.7?可以在 python 3.7 中以编程方式定义 Unicode 字符吗?
【发布时间】:2019-07-18 06:46:08
【问题描述】:

我正在尝试编写一个 python 3.7 函数来打印纸牌的 Unicode 字符(使用 wikipedia 作为参考)。

每个 Unicode 字符都是一个字符串,可以表示为 '\U1F0{SUIT_ID}{VALUE_ID}'。例如,'\U1F0A1' 是黑桃 ????。

我的代码是

def print_card(suit_id, value_id):
    print(f'\U1F0{suit_id}{value_id}')

理论上,print_card('A', '1') 命令会打印黑桃 A。命令print_card('C', 'D') 将打印钻石皇后。

但是,尝试定义此函数会导致以下错误:

  File "<ipython-input-32-b19e42821b25>", line 2
    print(f'\U1F0{suit_id}{value_id}')
         ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-4: truncated \UXXXXXXXX escape

这里有什么问题?

【问题讨论】:

    标签: python unicode python-3.x


    【解决方案1】:

    chr function creates a character from a numeric code point:

    >>> suit_id = 0xA0
    >>> value_id = 1
    >>> print(chr(0x1F000 + suit_id + value_id))
    ?
    

    如果没有evalcompileexec,您将无法处理生成的转义字符串,但这正是为您的目的而设计的函数。

    如果您真的热衷于字符串输入,int('A0', 16) 将为您提供0xA0(或int('A', 16) * 16)的数值,int('1F0{}{}'.format(suit_id, value_id), 16) 也适用于最接近的匹配项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多