以unicode字符串形式打印Python表情符号

26

我一直想将''输出为'\U0001f604'而不是笑脸,但似乎无法实现。

我尝试使用repr(),但它给了我这个结果:'\xf0\x9f\x98\x84'。目前它输出的是笑脸,而不是我想要的结果。使用encode('unicode_escape')会给出一个UnicodeDecodeError

这个笑脸作为字符串传递给了Python中的一个类方法。例如:"我很开心"

8个回答

24

因为某些原因,“点赞”表情符号无法正常工作? - jon_simon
1
@JonathanSimon 很敏锐地发现了问题。实际上应该使用“名称别名”而不是“短名称”。已相应更新答案。对于点赞,名称别名是“拇指向上符号”。因此,print('\N{thumbs up sign}') 可以正常工作。 - nth-attempt
链接是404。这个可能更相关。https://www.unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt - northtree

19
>>> print u'\U0001f604'.encode('unicode-escape')
\U0001f604

15

我找到了问题的解决方案。

我写了以下代码:

#convert to unicode
teststring = unicode(teststring, 'utf-8')

#encode it with string escape
teststring = teststring.encode('unicode_escape')

6
请问您能否提供这些Python函数的包名称? - Shubham Sharma
1
unicode是内置的,.encode()是字符串函数 - 不需要导入任何包。 - Jan Sila
1
@vijayathithya bytes.decode(b'\xf0\x9f\x98\x84', 'utf8') 可能是 Python 3 版本中类似上面 unicode 调用的暗示。如果你知道你有一个 bytes 对象,你可以直接在它上面调用 decode 来获取一个 (unicode) str 对象,例如 b'\xf0\x9f\x98\x84'.decode('utf8') - Sam Mason
@SamMason 是的,伙计!! - vijay athithya

13
只需添加。
# -*- coding: UTF-8 -*-
在您的代码中加入这段代码,您将能够打印Unicode字符。

5

以下代码可以帮助你简单地打印出一个表情符号:

代码

# -*- coding: UTF-8 -*-
import re

# string = 'Anything else that you wish to match, except URLs http://url.org'
string = 'Anything else that you wish to match'
matches = re.search(r'^(((?!http|https).)+)$', string)
if matches:
    print(matches.group(1)+ " is a match  ")
else: 
    print(' Sorry! No matches! Something is not right!')

带有URL的字符串输出

 Sorry! No matches! Something is not right!

不包含URL的字符串的输出

Anything else that you wish to match is a match  

3

使用U+前缀打印Unicode

我在查看这个有用的表情符号列表(这里)以及(这里)

除了复制任何表情符号,例如 --> ,我想要在我的代码中映射一些使用提供的代码的表情符号。 在链接的示例中,它将是这样的 -> U+1F4C0 现在,如果您发现代码以这种方式格式化,您需要执行以下操作:

  1. "+"替换为"000"
  2. 在Unicode前缀中添加"\"

结果应该是:

dict = '\U0001F4C0'
print(disc)
# 

2
我尝试过这个方法,它完美地运行了。
print(u'\U0001f604')

因此,您将获得输出结果

所以只需在字符串开头加上u。 希望这能帮到你。


2
如果这是为了调试目的,您可以使用%r作为格式说明符。
>>> print '%r' % u'\U0001f604'
u'\U0001f604'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接