我正在使用pyyaml(版本:5.1)和Python 2来解析传入 POST API 请求的YAML数据正文。
传入请求的正文包含一些 Unicode 对象以及一些字符串对象。
链接中给出的解决方案用于将 YAML 映射加载到 OrderedDict 中,其中流引用传入的 POST API 请求的YAML数据正文。
但是,我必须使用从某些仅接受字符串对象的库的链接生成的 OrderedDict 。
我无法更改库也无法更新它,我必须使用 Python 2。
目前正在使用的解决方案是,
获取从链接生成的 OrderedDict
递归地解析它,将任何找到的 Unicode 对象转换为 String 对象
其示例代码如下,
def convert(data):
if isinstance(data, unicode):
return data.encode('utf-8')
if isinstance(data, list):
return [convert(item) for item in data]
if isinstance(data, dict):
newData = {}
for key, value in data.iteritems():
newData[convert(key)] = convert(value)
return newData
return data
尽管这可行,但该解决方案效率不高,因为完整的 OrderedDict 在创建后才被解析。
有没有一种方法可以在 OrderedDict 生成之前或期间完成数据转换,以避免再次解析它?
PIPIONE
相关分类