[英]u'Too' u'much' u'unicode' u'returned'
我有一个api,它使用json在自然语言处理上下文中将内容放入和取出。
一切都以unicode的形式出现。 例如,如果从我的api中检索单词列表,则每个单词都是u''。 这是打印到文件后json输出的样子:
{u'words': [u'every', u'single', u'word']}
我必须澄清一下,在终端中一切看起来都不错,只是当我将输出打印到文件中时不是。
我还没有弄清楚这是否是默认的默认行为,或者是否需要做一些简单的事情来使之简单明了。 输出将用于除python之外的其他语言以及需要可读和/或可解析的其他上下文。
所以很明显,我对python和unicode以及它的运行方式和位置不了解。
在处理json时是否更可取? 我应该不用担心吗?
如何关闭此功能,或如何采取进一步的措施(我已经尝试过,但是无法确切地知道这样做的位置),以减少麻烦。
我有很多东西要学,所以任何输入都值得赞赏。
编辑:所有输入都很有用,谢谢。
我误以为JSONify所做的比我猜想的要多。 如果我在任务链的前面进行json.dumps,则在另一端会得到实际的json。
这没有错,您无需为此做任何事情。
在Python 2中, str
类似于C字符串-它只是一个字节序列,有时错误地假定为ASCII文本。 它可以包含编码文本,例如UTF-8或ASCII。
unicode
类型表示实际的文本字符串,类似于Java String
。 它是抽象意义上的文本,与特定的编码无关。 您可以将解码str
到unicode
,或编码unicode
到一个str
。
JSON键和值是字符串-它们不是字节数组,而是文本-因此它们由Python中的unicode
对象表示。
如果您需要JSON输出以用于另一种语言,请使用json
模块从您的字典中生成它:
>>> import json
>>> print json.dumps({u'words': [u'every', u'single', u'word']})
{"words": ["every", "single", "word"]}
最好是,因为JSON被定义为unicode。
如果您有其他更麻烦的事情引起麻烦,应该与他人分享,否则,如果您通常不喜欢Unicode(尤其是Python),我建议您观看Ned Batchelder的介绍 。 我不知道是什么使您感到烦恼,因为我不知道您在使用此命令做什么。
如果有可能,您应该将所有内部内容都保留在unicode中。 在python与其他程序s.encode('UTF-8')
,使用s.encode('UTF-8')
生成一个常规字符串,您可以将其写入文件或套接字或任何其他内容。 使用s.decode('UTF-8')
将字符串从文件/套接字转换回unicode。 (UTF-8似乎是一个合理的默认值,但请使用您的协议指定的任何内容。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.