您好,我正在尝试使用python 2.7在下载的推文中查找所有表情符号
我尝试使用以下代码:
import os
import codecs
import emoji
from nltk.tokenize import word_tokenize
def extract_emojis(token):
emoji_list = []
if token in emoji.UNICODE_EMOJI:
emoji_list.append(token)
return emoji_list
for tweet in os.listdir(tweets_path):
with codecs.open(tweets_path+tweet, 'r', encoding='utf-8') as input_file:
line = input_file.readline()
while line:
line = word_tokenize(line)
for token in line:
print extract_emojis(token)
line = input_file.readline()
但是我只得到空列表,而不是表情符号。如果我收到以下推文
schuld van de sossen SP.a: wij hebben niks gedaan Groen: we gaan energie VERBIEDEN!
代码的输出是
[]
而不是所需的输出:
[, ]
有帮助吗?? 谢谢!
答案 0 :(得分:1)
确保您的文本已在utf-8 text.decode('utf-8')
找到文本中的所有表情符号,必须用字符[str for str in decode]
分隔字符
将所有表情符号保存在列表[c for c in allchars if c in emoji.UNICODE_EMOJI]
类似这样的东西:
import emoji
text = " lorum ipsum de "
decode = text.decode('utf-8')
allchars = [str for str in decode]
list = [c for c in allchars if c in emoji.UNICODE_EMOJI]
print list
[u'\ U0001f914',u'\ U0001f648',u'\ U0001f60c',u'\ U0001f495', u'\ U0001f46d',u'\ U0001f459']
要找回表情符号,请尝试this
答案 1 :(得分:1)
这在python 2中有效-
x = "schuld van de sossen SP.a: wij hebben niks gedaan Groen: we gaan energie VERBIEDEN!"
[i for i in x.split() if unicode(i, "utf-8") in emoji.UNICODE_EMOJI]
# OP
['\xf0\x9f\x98\xa1', '\xf0\x9f\x98\xb4']
答案 2 :(得分:0)
我们可以通过多种方式从Python字符串中提取表情符号。
突出显示的是使用 emoji 库。
如果您正在处理文件,请确保已读取编码为 utf-8 的文件(同时也保存了 utf-8-sig )
此处将显示如何列出字符串中存在的所有表情符号以及编号。每个表情符号的字符串和类型中表情符号的组合
代码:
#import required libraries
import emoji
from emoji import UNICODE_EMOJI
#getting all emojis as lists
all_emojis = list(UNICODE_EMOJI.keys())
#defining sentence
sentence = "schuld van de sossen ? SP.a: wij hebben niks gedaan ? Groen: we gaan energie VERBIEDEN!"
#getting Emoji Count
emoji_count = sum([sentence.count(emoj) for emoj in UNICODE_EMOJI])
#listing all Emojis
listed_emojis = ','.join(re.findall(f"[{''.join(all_emojis)}]", str(sentence)))
#listing all Emoji Types
emoji_types = ','.join([UNICODE_EMOJI[detect_emoji].upper()[1:-1] for detect_emoji in listed_emojis.split(',')])
#Displaying Sentence, Emoji Count, Emojis and Emoji Types
print(f"Sentence: {sentence}\nListed Emojis: {listed_emojis}\nCount: {emoji_count}\nEmoji Types: {emoji_types}")
输出:
Sentence: schuld van de sossen ? SP.a: wij hebben niks gedaan ? Groen: we gaan energie VERBIEDEN!
Listed Emojis: ?,?
Count: 2
Emoji Types: POUTING_FACE,SLEEPING_FACE
我希望这会有所帮助。.如果有人有疑问,请在这里写。我会尝试修复..:)