【发布时间】:2017-12-06 02:56:03
【问题描述】:
我正在努力在一个简单的 python 3.6 脚本中加载表情符号字符列表。 YAML 结构基本如下:
- ????
- ????
- ????
我的 python 脚本如下所示:
import yaml
f = open('emojis.yml')
EMOJIS = yaml.load(f)
f.close()
我收到以下异常:
yaml.reader.ReaderError: unacceptable character #x001d: special characters are not allowed in "emojis.yml", position 2
我已经看到了allow_unicode=True 选项,但这似乎只适用于 yaml.dump。似乎人们在 Python2 中遇到了类似问题,但由于所有字符串都应该是 unicode,我无法弄清楚为什么这不起作用。
我还尝试将我的表情符号用引号括起来,并为“tag:yaml.org,2002:str”使用客户构造函数。我的自定义构造函数可能从未被击中,因为 yaml lib 无法将我的表情符号识别为字符串类型。当我将表情符号直接定义为源代码中的字符串时,我也会观察到相同的行为。
有没有办法使用 PyYAML 加载包含表情符号的 yaml 文件?
【问题讨论】:
-
我认为 PyYAML 根本不支持 SMP。
-
@IgnacioVazquez-Abrams,对不起,没有 unicode 专家。 SMP,你的意思是补充多语言平面吗? SMP 是否定义了表情符号支持?
-
@QuinnStearns SMP 是supplementary Unicode plane 1,该平面包括那些emoticons。 PyYAML 基于易于修改的测试考虑那些不可打印的。 PyYAML 的主要开发在 2010 年推出表情符号之前很久就停止了(即在 Unicode 6.0 及更高版本中),这也是 PyYAML 不支持最新的 YAML 1.2 标准(2009)的原因。一个简单的解决方法是重新定义可打印的 unicode 字符匹配规则。
标签: python python-3.x unicode yaml python-3.6