Python 2.7:从文本中检测表情符号
Python 2.7: detect emoji from text
我希望能够检测文本中的表情符号并查找他们的名字。
我没有成功使用 unicodedata 模块,我怀疑我没有
了解 UTF-8 约定。
我想我需要将我的文档加载为 utf-8,然后将 unicode "strings" 分解为 unicode 符号。遍历这些并查找它们。
#new example loaded using pandas and encoding UTF-8
'A man tried to get into my car\U0001f648'
type(test) = unicode
import unicodedata as uni
uni.name(test[0])
Out[89]: 'LATIN CAPITAL LETTER A'
uni.name(test[-3])
Out[90]: 'LATIN SMALL LETTER R'
uni.name(test[-1])
ValueError Traceback (most recent call last)
<ipython-input-105-417c561246c2> in <module>()
----> 1 uni.name(test[-1])
ValueError: no such name
# just to be clear
uni.name(u'\U0001f648')
ValueError: no such name
我通过 google 查找了 unicode 符号,它是一个合法的符号。
也许 unicodedata 模块不是很全面......?
我正在考虑自己从 here 中查找 table。
对其他想法感兴趣...这个似乎可行。
这是阅读您提供的 link 的方法。它是从 Python 2 翻译而来的,所以可能会有一两个错误。
import re
import urllib2
rexp = re.compile(r'U\+([0-9A-Za-z]+)[^#]*# [^)]*\) *(.*)')
mapping = {}
for line in urllib2.urlopen('ftp://ftp.unicode.org/Public/emoji/1.0/emoji-data.txt'):
line = line.decode('utf-8')
m = rexp.match(line)
if m:
mapping[chr(int(m.group(1), 16))] = m.group(2)
我的问题是将 Python2.7 用于 unicodedata 模块。
使用 Conda 我创建了一个 python 3.3 环境,现在 unicodedata 可以工作了
正如预期的那样,我已经放弃了我正在研究的所有奇怪的技巧。
# using python 3.3
import unicodedata as uni
In [2]: uni.name('\U0001f648')
Out[2]: 'SEE-NO-EVIL MONKEY'
感谢 Mark Ransom 指出我最初从 not
正确导入我的数据。再次感谢您的帮助。
我希望能够检测文本中的表情符号并查找他们的名字。
我没有成功使用 unicodedata 模块,我怀疑我没有 了解 UTF-8 约定。
我想我需要将我的文档加载为 utf-8,然后将 unicode "strings" 分解为 unicode 符号。遍历这些并查找它们。
#new example loaded using pandas and encoding UTF-8
'A man tried to get into my car\U0001f648'
type(test) = unicode
import unicodedata as uni
uni.name(test[0])
Out[89]: 'LATIN CAPITAL LETTER A'
uni.name(test[-3])
Out[90]: 'LATIN SMALL LETTER R'
uni.name(test[-1])
ValueError Traceback (most recent call last)
<ipython-input-105-417c561246c2> in <module>()
----> 1 uni.name(test[-1])
ValueError: no such name
# just to be clear
uni.name(u'\U0001f648')
ValueError: no such name
我通过 google 查找了 unicode 符号,它是一个合法的符号。 也许 unicodedata 模块不是很全面......?
我正在考虑自己从 here 中查找 table。 对其他想法感兴趣...这个似乎可行。
这是阅读您提供的 link 的方法。它是从 Python 2 翻译而来的,所以可能会有一两个错误。
import re
import urllib2
rexp = re.compile(r'U\+([0-9A-Za-z]+)[^#]*# [^)]*\) *(.*)')
mapping = {}
for line in urllib2.urlopen('ftp://ftp.unicode.org/Public/emoji/1.0/emoji-data.txt'):
line = line.decode('utf-8')
m = rexp.match(line)
if m:
mapping[chr(int(m.group(1), 16))] = m.group(2)
我的问题是将 Python2.7 用于 unicodedata 模块。 使用 Conda 我创建了一个 python 3.3 环境,现在 unicodedata 可以工作了 正如预期的那样,我已经放弃了我正在研究的所有奇怪的技巧。
# using python 3.3
import unicodedata as uni
In [2]: uni.name('\U0001f648')
Out[2]: 'SEE-NO-EVIL MONKEY'
感谢 Mark Ransom 指出我最初从 not 正确导入我的数据。再次感谢您的帮助。