考慮以下列表:如何從文本中提取所有表情符號?
a_list = [' me así, bla es se ds ']
我怎樣才能在新的列表中的所有表情符號,裏面a_list
提取:
new_lis = [' ']
我試圖用正則表達式,但我沒有所有可能的表情符號編碼。
考慮以下列表:如何從文本中提取所有表情符號?
a_list = [' me así, bla es se ds ']
我怎樣才能在新的列表中的所有表情符號,裏面a_list
提取:
new_lis = [' ']
我試圖用正則表達式,但我沒有所有可能的表情符號編碼。
您可以使用emoji
庫。您可以通過檢查是否包含在emoji.UNICODE_EMOJI
中來檢查單個代碼點是否是表情符號代碼點。
import emoji
def extract_emojis(str):
return ''.join(c for c in str if c in emoji.UNICODE_EMOJI)
您可以在**#EmojiCodeSheet ** [這裏](https://github.com/shanraisshan/EmojiCodeSheet)下載字符串/ int格式的emoji列表,以便使用自定義比較器。 – shanraisshan
所有Unicode表情符號及其各自的編碼點均爲here。它們是1F600到1F64F,所以你可以用一個類似範圍的迭代器來構建它們。
這只是一個表情符號特定範圍。還有更多。 – user2357112
如果你不想使用外部庫,你可以簡單地使用正則表達式和re.findall()
以適當的正則表達式一個Python化的方式找到emojies:
In [74]: import re
In [75]: re.findall(r'[^\w\s,]', a_list[0])
Out[75]: ['', '', '', '', '', '']
正則表達式r'[^\w\s,]'
是否定字符類,它匹配任何不是單詞字符,空格或逗號的字符。
正如我在評論中提到的,文本通常包含單詞字符和標點符號,通過這種方法很容易處理,對於其他情況,您可以將它們手動添加到字符類中。請注意,由於您可以在字符類中指定一系列字符,所以您甚至可以使它更短且更靈活。
另一種解決方案是使用接受表情符號的字符類([]
而不是^
)排除非表情符號的否定字符類。由於有很多emojis with different unicode values,您只需要將範圍添加到角色類。如果你想匹配更多的emojies這裏是一個很好的參考包含所有標準的emojies與各自的範圍爲不同的emojies http://apps.timwhitlock.info/emoji/tables/unicode:
適用於此特定輸入,但有許多其他非表情符號字符不屬於'\ w','\ s'或逗號類別。 – user2357112
@ user2357112文本通常包含單詞字符和標點符號,通過這種方法很容易處理,對於其他情況,您可以手動將它們添加到字符類中。請注意,由於您可以在字符類中指定一系列字符你甚至可以使它更短,更靈活。 – Kasramvd
您的正則表達式在所有非逗號標點符號中失敗,除此之外。 – user2357112
最高評分的答案並不總是工作。例如,標誌emojis將不會被找到。考慮字符串:
s = u'Hello \U0001f1f7\U0001f1fa hello'
什麼會更好地工作是
import emoji
emojis_list = map(lambda x: ''.join(x.split()), emoji.UNICODE_EMOJI.keys())
r = re.compile('|'.join(re.escape(p) for p in emojis_list))
print(' '.join(r.findall(s)))
得到什麼風滾草問的解決方案,是最精彩的答案,user594836的答案之間的混合。這是Python 3.6中適用於我的代碼。
import emoji
import re
a_list=[' me así,bla es,se ds ']
## Create the function to extract the emojis
def extract_emojis(str):
emojis_list = map(lambda x: ''.join(x.split()), emoji.UNICODE_EMOJI.keys())
r = re.compile('|'.join(re.escape(p) for p in emojis_list))
aux=[' '.join(r.findall(s)) for s in a_list]
return(aux)
## Execute the function
extract_emojis(s)
## the output
[' ']
鏈接在http://stackoverflow.com/q/26568722/674039和http://stackoverflow.com/q/35404144/674039 – wim