【发布时间】:2017-05-21 19:13:25
【问题描述】:
我正在尝试将给定文本中的表情符号与其他字符/单词/表情符号分开。我想稍后将表情符号用作文本分类中的特征。因此,重要的是我将句子中的每个表情符号单独视为一个单独的字符。
代码:
import re
text = "I am very #happy man but???????? my wife???? is not ????????"
print(text) #line a
reg = re.compile(u'['
u'\U0001F300-\U0001F64F'
u'\U0001F680-\U0001F6FF'
u'\u2600-\u26FF\u2700-\u27BF]+',
re.UNICODE)
#padding the emoji with space at both the ends
new_text = reg.sub(' \1 ',text)
print(new_text) #line b
# this is just to test if it can still identify the emoji in new_text
new_text2 = reg.sub('#\1#', new_text)
print(new_text2) # line c
这是实际输出:
(我不得不粘贴屏幕截图,因为从终端复制粘贴输出会扭曲 b 和 c 行中那些已经扭曲的表情符号)
这是我的预期输出:
I am very #happy man but???????? my wife???? is not ????????
I am very #happy man but ???? ???? my wife ???? is not ???? ????
I am very #happy man but #????# #????# my wife #????# is not #????# #????#
问题:
1) 为什么搜索和替换没有按预期工作?替换的表情符号是什么? (b 行)。它绝对不是原始表情符号的 unicode,否则 c 行会打印出两端带有 # 填充的表情符号。
2) 我不确定我是否正确,但是 - 为什么将分组的表情符号替换为单个表情符号/unicode? (b行)
【问题讨论】:
-
你期待这个 - rextester.com/UXJ28002 吗?我发现您的预期输出与我在解决最明显的问题后得到的不同。
-
我希望每个表情符号都分开。请参阅预期输出中的第二个问题和第三行。不知道为什么分组的表情符号没有分开。
-
我认为这是因为您量化了字符类,请参阅rextester.com/RXOBH48259。现在,它看起来像您预期的输出。
-
这似乎行得通。您能否将其添加为答案并简要说明我哪里出错了?我还不擅长 python/regex。