4

可能重复:
字符串值前面的“u”符号是什么意思?

我有这个 json 文本文件:

{
   "EASW_KEY":" aaaaaaaaaaaaaaaaaaaaaaa",
   "EASF_SESS":" aaaaaaaaaaaaaaaaaaaaaaa",
   "PHISHKEY":" aaaaaaaaaaaaaaaaaaaaaaa",
   "XSID":" aaaaaaaaaaaaaaaaaaaaaaa"
}

如果我这样解码:

import json
data = open('data.txt').read()
data = json.loads(data)
print data['EASW_KEY']

我明白了:

u' aaaaaaaaaaaaaaaaaaaaaaa' 

而不是简单地:

aaaaaaaaaaaaaaaaaaaaaaa

这是什么u意思?

4

2 回答 2

5

python中字符串前的'u'是什么意思?

python字符串前缀的字符称为python字符串编码声明。你可以在这里阅读所有关于它们的信息:https ://docs.python.org/3.3/reference/lexical_analysis.html#encoding-declarations

u 代表 unicode。该插槽中的替代字母可以r'foobar'用于原始字符串,b'foobar' 用于字节字符串。

关于 Python 认为 unicode 的一些帮助:http: //docs.python.org/howto/unicode.html

然后要探索它的本质,请运行以下命令:

type(u'abc')

返回:

<type 'unicode'>

如果你在应该使用 ascii 时使用 Unicode,或者在应该使用 unicode 时使用 ascii,那么当用户在运行时开始“探索 unicode 空间”时,你很可能会遇到冒泡实现。

例如,如果您将 unicode 字符串传递给 facebook 的api.fql(...)函数,表示它接受 unicode,它会愉快地处理您的请求,然后返回未定义的结果,就好像函数成功了一样,因为它吐得满地都是。

正如这篇文章中所定义的:

来自 python 的 FQL 多查询因 unicode 查询而失败

一些 unicode 字符会导致您在生产中的代码发生癫痫发作然后吐在地板上。因此,请确保您没事,并且客户可以忍受。

于 2012-10-17T14:57:01.783 回答
2

unicode 对象中的u前缀repr表示它是 unicode 对象。

如果您真的只是unicode 对象本身,而不是包含它的列表,那么您不应该看到这一点。print(事实上​​,运行你的代码并不会像这样打印它。)

于 2012-10-17T14:56:23.653 回答