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

时间:2012-10-17 14:54:48

标签: python json unicode

  

可能重复:
  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是什么意思?

2 个答案:

答案 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个元组都要做好准备: enter image description here

大约3%的上述字符会导致生产中的代码发作,然后在地板上呕吐。

答案 1 :(得分:1)

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

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