如何在Python中仅选择包含表情符号和表情符号的行?

din*_*aro 4 python nlp emoticons emoji sentiment-analysis

我在 Python Pandas 中有 DataFrame,如下所示:

sentence
------------

I like it
+1
One :-) :)
hah
Run Code Online (Sandbox Code Playgroud)

我需要仅选择包含表情符号或表情符号的行,因此我需要如下所示的内容:

sentence
------------

+1
One :-) :)
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Python中做到这一点?

moz*_*way 6

您可以使用正则表达式范围选择 unicode 表情符号:

df2 = df[df['sentence'].str.contains(r'[\u263a-\U0001f645]')]
Run Code Online (Sandbox Code Playgroud)

输出:

  sentence
0      
2     +1
Run Code Online (Sandbox Code Playgroud)

然而,对于 ASCII“表情符号”来说,这更加模糊,因为没有标准定义,而且可能有无穷无尽的组合。如果将其限制为包含眼睛 ';:' 和嘴巴 ')(' 的笑脸,您可以使用:

df[df['sentence'].str.contains(r'[\u263a-\U0001f645]|(?:[:;]\S?[\)\(])')]
Run Code Online (Sandbox Code Playgroud)

输出:

     sentence
0         
2        +1
3  One :-) :)
Run Code Online (Sandbox Code Playgroud)

但是您会错过大量潜在的 ASCII 可能性::O:P8D等。