【问题标题】:Translate to text a Emoji Unicode String un python在 python 中将 Emoji Unicode 字符串转换为文本
【发布时间】:2021-11-27 01:36:33
【问题描述】:

我有一个以 csv 格式提供的推文列表。 但是当我阅读它们时,emojis unicode 已被转换为 str,我无法将它们翻译成他们的真实姓名(“waffle”或“heart”)。

def load_csv(csv_name):
    path = os.getcwd()
    df = pd.read_csv(path + "/" + csv_name, header=0, index_col=0, parse_dates=True, sep=",", encoding="utf-8")
    return df

csv_name = "tweets_nikekaepernick.csv"
df = load_csv(csv_name)

text = df["tweet_full_text"].iloc[0]
text

Out[]: 'Hi <U+0001F602><U+0001F602><U+0001F480><U+0001F480><U+0001F480><U+0001F480>'

【问题讨论】:

  • 如果我创建一个带有 UTF 表情符号的 .csv,就像你提到的那样,并使用 read_csv 将其读入 DataFrame,Python 会在访问其中的值时正确打印表情符号。如果您可以提供指向存在此问题的数据文件的链接,则可能会说明您看到此行为的原因。另外,您能否提及您正在使用的特定 Python 版本?
  • 可能您运行解释器的输出设备不支持 UTF-8 文本输出?你究竟是如何运行上述代码的?
  • 嗨,我在 Jupyter Notebook 上运行它,使用 Python 3.8.8 [链接] (drive.google.com/file/d/1oldvYLOD1NpKSbrAKDwARe-LXpDiFIsi/…)
  • 顺便说一句,pd.read_csv(os.getcwd() + "/" + "filename", ...) 是一种非常不方便和笨拙的说法 pd.read_csv("filename", ...)。或许也可以看看What exactly is current working directory?

标签: python twitter encode emoji


【解决方案1】:

试试demoji。您可以在here 获取有关demoji 的更多详细信息。

代码

import re
import demoji
demoji.download_codes()

text = 'Hi <U+0001F602><U+0001F602><U+0001F480><U+0001F480><U+0001F480><U+0001F480>'

# changed format with regex
text_ = re.sub('\+|>','',text).replace('<','\\').encode().decode('unicode-escape')

#find emoji
demoji.findall(text_)

结果

demoji.findall(text_)
Out[1]: {'?': 'skull', '?': 'face with tears of joy'}

更多

更多,如果你想删除 emojis,你可以试试下面的代码,引用表单here:

pattern = re.compile("["
        u"\U0001F600-\U0001F64F"  # emoticons
        u"\U0001F300-\U0001F5FF"  # symbols & pictographs
        u"\U0001F680-\U0001F6FF"  # transport & map symbols
        u"\U0001F1E0-\U0001F1FF"  # flags (iOS)
                           "]+", flags=re.UNICODE)

print(pattern.sub(r'', text_))
>>> Hi

或者,如果你想把你的表情符号翻译成str,你可以试试:

import emoji
print(emoji.demojize(text_))

>>> Hi :face_with_tears_of_joy::face_with_tears_of_joy::skull::skull::skull::skull:

【讨论】:

  • 感谢您的回答。但是,它仍然不起作用:(即使我粘贴出现的字符串,它也找不到任何表情符号。实际上我从来没有看到表情符号图像,我只得到这个 字符串. 我试过`import demoji demoji.dow​​nload_codes() text = 'Hi ' demoji.findall( text) ` 但我得到了 ' {} '
猜你喜欢
  • 2018-09-18
  • 2018-05-09
  • 2021-08-16
  • 2011-02-03
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
相关资源
最近更新 更多