给定一个包含表情符号字符十六进制值的变量str
(例如s = '1f602'
),如何以编程方式将其作为UTF-8编码的表情符号字符打印到文件中?
这个问题不是以编程方式完成的,而是要求代码点本身包含在源代码中。
我知道这仅适用于Python 3:
import codecs
s = '1f602'
with codecs.open('test.out', 'w', 'utf-8') as outfile:
outfile.write('{}\n'.format(eval('u"{}{}"'.format(r'\U000', text))))
Run Code Online (Sandbox Code Playgroud)
在受支持的文本编辑器中打开文件后,该文件将显示一个表情符号字符。
如何在没有Python 2的情况下也能做到这一点eval
?
我以为unichr
可以,但是只接受少于的unicode字符0x10000
。
您也可以通过UTF-32编码:
import struct
def fullchr(n):
return struct.pack('<I', n).decode('utf-32le')
outfile.write(fullchr(0x1F602)) # int('1F602', 16)
Run Code Online (Sandbox Code Playgroud)
或从Python 3.3开始,不再存在狭窄构建的问题,因此您可以使用chr(0x1F602)
。