可能重复:
What does the ‘u’ symbol mean in front of string values?
我有这个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
是什么意思?
答案 0 :(得分:6)
python中字符串之前的'u'是什么意思?
为python字符串添加前缀的字符称为python String Encoding声明。您可以在此处阅读所有相关信息:https://docs.python.org/3.3/reference/lexical_analysis.html#encoding-declarations
你代表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,它将很乐意处理你的请求,然后返回未定义的结果,好像函数成功,因为它会全部在地毯上。
如本文所定义:
FQL multiquery from python fails with unicode query
Unicode是一个饱含地雷的战场,让它被隔离,因为它是恶意用户输入的病毒载体,将被用作骡子和载体,以便在命令链上传递66阶段自毁序列。你被警告了。
这些野蛮人在带有unicode的护城河中进入,你必须为他们所有人做好准备,并且每3个元组都要做好准备:
大约3%的上述字符会导致生产中的代码发作,然后在地板上呕吐。
答案 1 :(得分:1)
unicode对象的u
中的repr
前缀表示它是一个unicode对象。
如果你真的只是print
unicode对象本身,而不是包含它的列表,那么你应该不看到这个。 (事实上,运行代码实际上并不像这样打印它。)