Python的emoji转换(unicode emoji与运营商emoji之间的转换)库(emoji4unicode项目包装库)
项目描述
e4u库是emoji4unicode的捆绑库
它用于处理unicode emoji和运营商emoji。主要功能是:
将unicode emoji转换为运营商emoji
将运营商emoji转换为unicode emoji
该库可以处理的unicode emoji的详细信息请见http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html
该库参考了emoji4unicode和django-bpmobile的源代码
安装
sudo pip install e4u
或者
sudo pip install git+git://github.com/lambdalisue/e4u.git#egg=e4u
必需(自动安装)
BeautifulSoup(用于分析运营商网站和emoji4unicode.xml)
如何使用
该库使用 emoji4unicode.xml 创建表情符号的转换表。因此,您需要从文件系统或互联网上加载它。建议使用 e4u.load() 方法从谷歌代码的 trunk url 加载,如果您无法连接到互联网,请使用 e4u.load(file=r"some/path/emoji4unicode.xml") 代替。 emoji4unicode.xml 可以在 http://code.google.com/p/emoji4unicode/source/browse/trunk/data/emoji4unicode.xml 找到
一旦加载 emoji4unicode.xml,您可以使用 e4u.translate() 方法进行表情符号的翻译。要将运营商的表情符号转换为 Unicode 表情符号,请使用类似 contents = e4u.translate(contents, **e4u.DOCOMO_TRANSLATE_PROFILE) 的方法。要将 Unicode 表情符号转换为运营商的表情符号,请使用类似 contents = e4u.translate(contents, reverse=True, **e4u.DOCOMO_TRANSLATE_PROFILE) 的方法
以下代码描述了如何使用该库。
import e4u e4u.load() carrier_contents = "\xF8\x9F \xF8\xA0 \xF8\xA1" # Sun, Cloud, Rain in DoCoMo emoji unicode_contents = u"\u2600 \u2601 \u2614" # Sun, Cloud, Rain in Unicode emoji # DoCoMo => Unicode contents = carrier_contents expected = unicode_contents # Translate emoji with DoCoMo profile (= {'carrier':'docomo', 'encoding':'cp932'}) result = e4u.translate(contents, **e4u.DOCOMO_TRANSLATE_PROFILE) assert isinstance(result, unicode) # return value is Unicode assert result == expected # Unicode => DoCoMo contents = unicode_contents expected = carrier_contents # Translate emoji with DoCoMo profile with reverse=True result = e4u.translate(contents, reverse=True, **e4u.DOCOMO_TRANSLATE_PROFILE) assert isinstance(result, unicode) # return value is Unicode assert result.encode('cp932', 'replace') == expected
支持的运营商
目前仅支持 DoCoMo、KDDI、SoftBank 和 Google。您可以传递给 e4u.translate() 方法的运营商名称是
text - 文本
docomo_img - 使用 DoCoMo 表情符号的 img 标签
kddi_img - 使用 KDDI 表情符号的 img 标签(推荐用于不支持表情符号的 PC 或其他设备)
softbank_img - 使用 SoftBank 表情符号的 img 标签(不推荐,SoftBank 可能会拒绝外部访问,因此无法工作)
google - 使用 GMail 表情符号。我还没有想出如何使用它,但以防万一。
docomo - 使用 DoCoMo 表情符号。SJIS 格式(解码为 Unicode)
kddi - 使用 KDDI 表情符号。SJIS 格式(解码为 Unicode)
softbank - 使用 SoftBank 表情符号。Unicode 格式
方法
- e4u.load(filename=None, url=r"http://emoji4unicode.googlecode.com/svn/trunk/data/emoji4unicode.xml", loader_class=loader.Loader)
用于加载 emoji4unicode.xml 并构建内部转换表。该方法不会影响两次。使用 e4u.reload() 代替重新加载库。
- e4u.reload(filename=None, url=r"http://emoji4unicode.googlecode.com/svn/trunk/data/emoji4unicode.xml", loader_class=loader.Loader)
强制重新加载 emoji4unicode.xml,一般使用时请使用 e4u.load() 方法。
- e4u.has_loaded()
如果已调用 e4u.load() 方法,则返回 True。一般使用时请使用 e4u.load() 方法。永远不要这样做
# stupid way import e4u if not e4u.has_loaded(): e4u.reload() # smarter import e4u e4u.load()
- e4u.get(id)
获取 id 的表情符号符号实例。id 在 http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html 中描述。从 ID 中去除 'e-',如 '000' 对于 'e-000',并以 Unicode 格式传递。
- e4u.translate(source, carrier, reverse=False, encoding=None)
将源中包含的 Unicode 表情符号转换为运营商的表情符号或反向。
- e4u.translate_char(source_char, carrier, reverse=False, encoding=None)
将 Unicode 表情符号字符转换为运营商的表情符号字符。比 e4u.translate() 方法更快,但不能处理文本。用于字母转换。