首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法处理unicode字符串?

无法处理unicode字符串?
EN

Stack Overflow用户
提问于 2015-07-07 15:08:57
回答 1查看 1.3K关注 0票数 5

我试图使用华丽的方法来验证来自HTTP请求的JSON输入。但是,它似乎不能很好地处理unicode字符串。

代码语言:javascript
运行
复制
from voluptuous import Schema, Required
from pprint import pprint

schema = Schema({
    Required('name'): str,
    Required('www'): str,
})

data = {
    'name': 'Foo',
    'www': u'http://www.foo.com',
}

pprint(data)
schema(data)

上面的代码会产生以下错误:

代码语言:javascript
运行
复制
 voluptuous.MultipleInvalid: expected str for dictionary value @ data['www']

但是,如果我将u符号从URL中删除,那么一切都可以正常工作。这是个窃听器还是我做错了?

ps。如果与python2.7有任何关系,我将使用python2.7。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-09 11:29:16

Python2.7中有两种字符串类型:strunicode。在Python2.7中,str类型不是Unicode字符串,而是字节字符串。

因此,值u'http://www.foo.com'实际上不是str类型的实例,您将得到该错误。如果希望同时支持Python2.7中的str和Unicode字符串,则需要将模式更改为:

代码语言:javascript
运行
复制
from voluptuous import Any, Schema, Required

schema = Schema({
    Required('name'): Any(str, unicode),
    Required('www'): Any(str, unicode),
})

或者,为了简单起见,如果您总是接收Unicode字符串,那么您可以使用:

代码语言:javascript
运行
复制
schema = Schema({
    Required('name'): unicode,
    Required('www'): unicode,
})
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31272504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档