【问题标题】:Print unicode from formated string从格式化字符串打印 unicode
【发布时间】:2019-05-01 15:45:27
【问题描述】:

如何从格式化字符串打印一个 unicode 字符?通过以下示例,我有一个错误(python3):

 python -c 'print(u"\u{}".format("2665"))'
  File "<string>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape

【问题讨论】:

    标签: python python-3.x unicode


    【解决方案1】:

    这有点尴尬,但您可以使用原始字符串文字,编码,然后使用unicode_escape 编码解码回来:

    print(r"\u{}".format("2665").encode().decode('unicode_escape'))
    #  ♥
    

    【讨论】:

      【解决方案2】:

      "\u{}" 抛出该错误,因为字符串表示 \u<em>nnnn</em> 不应该与变量一起使用;这是一个字面的、直接的值。就像你不能做x = 't'; print ('a\{}b'.format(x)) 并期望在ab 之间有一个标签。

      要打印任何 Unicode 字符,请立即将其文字代码输入字符串本身:

       print ('Hello \u2665 world')
      

      结果:

      Hello ♥ world
      

      – 请注意,字符串本身不需要u 前缀;那是 Python 2.x'ism –,或者,如果您想在变量中提供字符值:

      print ('Hello {:c} world'.format(0x2665))
      

      其中 (1) :c 强制使用 字符表示 值,并且 (2) 您需要指出该值本身是十六进制的。 (因为字符串表示 \u<em>nnnn</em>always 十六进制。)

      【讨论】:

        猜你喜欢
        • 2016-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-22
        • 2013-08-29
        • 1970-01-01
        • 2014-08-23
        相关资源
        最近更新 更多