考虑以下列表:如何从文本中提取所有表情符号?
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