python画笑脸表情_关于Python:Python-用ASCII字符替换unicode表情符号

我当前的一个周末项目有一个问题。 我正在编写一个Python脚本,该脚本从不同的来源获取一些数据,然后将所有内容吐给esc-pos打印机。 您可能会想到pos打印机与emoji表情不完全一样...

所以这样的文字:

可爱!!!!!!!!????????????????

给我这个字符串:

'\u53ef\u7231!!!!!!!!\U0001f60d\U0001f60d\U0001f60d\U0001f60d\U0001f60d\U0001f60d\U0001f60d\U0001f61d'

打印机输出的结果与我当然想要的完全不同。 所以我需要用其他东西代替这些非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名称,即使失败,也将其简单替换为一些简单的标记。

例如,使用以下字符串:

abcd?e?f?g?h?i?j?k? 可爱!!!!!!!!????????????????

并运行功能:

string = u'abcd?e?f?g?h?i?j?k? \u53ef\u7231!!!!!!!!\U0001f60d\U0001f60d\U0001f60d\U0001f60d\U0001f60d\U0001f60d\U0001f60d\U0001f61d'

print(deEmojify(string))

将产生以下结果:

abcdsedfcgzhAiOjAEk[x] Ke Ai !!!!!!!![SMILING FACE WITH HEART-SHAPED

EYES][SMILING FACE WITH HEART-SHAPED EYES][SMILING FACE WITH

HEART-SHAPED EYES][SMILING FACE WITH HEART-SHAPED EYES][SMILING FACE

WITH HEART-SHAPED EYES][SMILING FACE WITH HEART-SHAPED EYES][SMILING

FACE WITH HEART-SHAPED EYES][FACE WITH STUCK-OUT TONGUE AND

TIGHTLY-CLOSED EYES]

尝试这个

import unicodedata

print( unicodedata.name(u'\U0001f60d'))

结果是

SMILING FACE WITH HEART-SHAPED EYES

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值