我試圖從其他字符/單詞/表情符號中給定文本中分隔表情符號。我希望稍後將表情符號用作文本分類中的功能。所以重要的是我將每個表情符號單獨作爲一個獨立的角色對待。Python表情符號搜索和替換不能按預期方式工作
代碼:
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行)
你想到這一點 - http://rextester.com/UXJ28002?我看到您的預期產出與解決最明顯問題後得到的結果不同。 –
我期待每個表情符號分開。在預期的輸出中查看我的第二個問題和第三行。不知道爲什麼組合的表情符號沒有分開。 –
我認爲這是因爲你量化了角色類,請參閱http://rextester.com/RXOBH48259。現在,它看起來像你的預期輸出。 –