Python-用ASCII字符替换Unicode表情符号 [英] Python - replace unicode emojis with ASCII characters
本文介绍了Python-用ASCII字符替换Unicode表情符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我现在的一个周末项目出了点问题。我正在编写一个Python脚本,该脚本从不同的来源获取一些数据,然后将所有数据输出到Esc-pos打印机。正如你可能想象的那样,POS打印机并不完全喜欢表情符号...
这样的文本:
可爱!!!!!!!!😍😍😍😍😍😍😍😝
给我这个字符串:
'u53efu7231!!!!!!!!U0001f60dU0001f60dU0001f60dU0001f60dU0001f60dU0001f60dU0001f60dU0001f61d'
打印机输出的结果当然与我想要的完全不同。因此,我需要用其他字符替换这些非ASCII字符。我真的不喜欢第一个字符,但我确实关心表情符号。使用unidecode(str(text))
这样的命令至少会将它们去掉,但我想将它们转换为更有用的东西。要么变成像[:-D]这样的经典微笑,要么变成[心形眼睛的笑脸]。
我的问题是...人们将如何着手做这件事呢?为大多数常见表情手动创建查询表似乎有点繁琐,所以我想知道是否还有其他我可以做的事情。
推荐答案
通过关于unicodedata.name
的提示和一些进一步的研究,我设法将这件事组合在一起:
import unicodedata
from unidecode import unidecode
def deEmojify(inputString):
returnString = ""
for character in inputString:
try:
character.encode("ascii")
returnString += character
except UnicodeEncodeError:
replaced = unidecode(str(character))
if replaced != '':
returnString += replaced
else:
try:
returnString += "[" + unicodedata.name(character) + "]"
except ValueError:
returnString += "[x]"
return returnString
基本上,它首先尝试找到最合适的ASCII表示,如果失败,它会尝试使用Unicode名称,如果同样失败,它只会用一些简单的标记来替换它。
以以下字符串为例:
šeđfčgžhäi?j?k可爱!!!!!!!!😍😍😍😍😍😍😍😝
并运行函数:
string = u'abcdšeđfčgžhÅiØjÆk u53efu7231!!!!!!!!U0001f60dU0001f60dU0001f60dU0001f60dU0001f60dU0001f60dU0001f60dU0001f61d'
print(deEmojify(string))
将产生以下结果:
AbcdsedfcgzhAiOjAEk[x]可爱![心形笑脸 眼睛][心形眼睛的笑脸][笑脸 心形眼睛][心形眼睛的笑脸][笑脸 心形眼睛][笑脸心形眼睛][微笑 心形眼睛的脸[舌头伸出来的脸 紧闭双眼]
这篇关于Python-用ASCII字符替换Unicode表情符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文