python列表读取编码的问题 30

如图,我的response是用python调用接口返回的结果,现在有以下几个问题1。这个结果是什么编码?2.我将结果中的一个包含中文的字段组成了列表K后,打印K中的一个值... 如图,我的response是用python调用接口返回的结果,现在有以下几个问题
1。这个结果是什么编码?
2.我将结果中的一个包含中文的字段组成了列表K后,打印K中的一个值能正确显示,但我直接 print k却显示为第二行中的那个unicode了,这是为什么?
3.直接str(list)也是显示的像第二行中的编码一样,原因是什么?
展开
 我来答
毫无威严雷米喵
2015-12-09 · TA获得超过428个赞
知道答主
回答量:29
采纳率:0%
帮助的人:44.3万
展开全部

这个结果不是什么编码,而是 list 的表示形式


1. 对于一个不是 str 的 obj, print obj 等价于 print str(obj)

2. str(obj) 的等价形式是 obj.__str__()

3. 对于 list 类型, __str__ 的定义是 '[%s]' % ', '.join(repr(i) for i in self)

    (每个元素的 repr 值拼接起来)

4. 对于 unicode 对象, repr 形式为

print repr(u'中文')
>> u'\u4e2d\u6587'

所以

array = [u'中文', u'中文', u'中文']

print array
>> [u'\u4e2d\u6587', u'\u4e2d\u6587', u'\u4e2d\u6587']

print '[%s]' % ', '.join(repr(i) for i in array)
>> [u'\u4e2d\u6587', u'\u4e2d\u6587', u'\u4e2d\u6587']


print u'中文'
>> 中文
print str(u'中文')
>> 中文

array = [u'中文', u'中文', u'中文']
print '[%s]' % ', '.join(array)
>> [中文, 中文, 中文]
追问
像这种b本来是字典中一个键值,我在用A=str(list)后用b in a去判断A,为什么会为false呢?
追答

不是很清楚你说的过程,你是说这样么?

d = {'a':[1,2,3], 'b':[2,3,4]}
lst = d['a']
print str(lst) in d
>> False

 或者是这样?

array = [u'中文', u'中文', u'中文']
print array[0] in str(array)
>> False
ai看雪
2015-12-09 · TA获得超过207个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:205万
展开全部
  1. unicode码

  2. 因为你 print k,向终端输出的是列表对象而不是Unicode 对象,而列表的内容就是这些东西;当你 print k[0]时,输出的时 Unicode 对象,终端将其实例化为 utf-8(如果支持的话)

  3. str 同理,因为在 python 内部,它就是那样表示的


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式