【问题标题】:Python – Print a character based on Unicode name stored as a string variablePython – 根据存储为字符串变量的 Unicode 名称打印字符
【发布时间】:2021-06-01 15:40:18
【问题描述】:

我正在尝试制作一个脚本,该脚本根据其 Unicode 名称打印一组字符(我所说的“Unicode 名称”是指我想使用字符的“描述”,而不是代码点)。

我知道为单个字符执行此操作的标准方法是:

>>> print('\N{GREEK SMALL LETTER PHI}')
φ

我的目标是使用这样的 for 循环:

unicode_names = ['GREEK SMALL LETTER ALPHA', 'GREEK SMALL LETTER PHI']
for name in unicode_names:
    char_name = "{{{0}}}".format(name)
    print('\N' + char_name)

输出将是:

α
φ

问题是,无论我尝试什么,(到目前为止),我都无法使用存储为字符串变量的名称打印 unicode 字符,无论是通过字符串连接还是使用.format() 方法。

phi = '\N{GREEK SMALL LETTER PHI}'
phi_name = "{{{0}}}".format('GREEK SMALL LETTER PHI')
print(phi)
print(phi_name)
print('\N' + phi_name)

当我尝试时,我得到了这种 SyntaxError :

    print('\N' + phi_name)
          ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: malformed \N character escape

我应该使用 f 字符串还是其他类型的特殊字符串? 为什么print('\N{GREEK SMALL LETTER PHI}') 的解释与print('\N' + '{GREEK SMALL LETTER PHI}') 不同?

【问题讨论】:

  • 你希望得到什么输出?
  • 我想你要找的模块是unicodedata
  • 对不起,我没有准确,但你没看错:我的目标是输出 α φ。我不知道 unicode 数据库,但它可以完成这项工作。非常感谢!!

标签: python unicode


【解决方案1】:

这里有一个如何使用unicodedata的演示:

import unicodedata
unicode_names = ['GREEK SMALL LETTER ALPHA', 'GREEK SMALL LETTER PHI']
for name in unicode_names:
    print (name, unicodedata.lookup(name))

【讨论】:

    【解决方案2】:

    您正在寻找unicodedata.lookup 函数。

    >>> import unicodedata
    >>> unicodedata.lookup('GREEK SMALL LETTER PHI')
    'φ'
    

    【讨论】:

      【解决方案3】:

      这对你有用吗?

      unicode_names = ['\N{GREEK SMALL LETTER ALPHA}', '\N{GREEK SMALL LETTER PHI}']
      for name in unicode_names:
          print(f"{name}")
      

      【讨论】:

        猜你喜欢
        • 2016-09-18
        • 1970-01-01
        • 2014-09-16
        • 2014-08-23
        • 2012-08-14
        • 2018-05-09
        • 2021-10-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多