设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Python 第45课】 查天气(3)

[复制链接]

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

楼主
发表于 2016-1-22 19:56:06 |显示全部楼层
今天一切顺利~~
关于编码的问题,自己看了一些文章,大致有一些了解,但还是有一个问题想请教crossin先生:
我看到说python内部使用unicode编码,为什么从json.loads之后,data字典里面把原来content里面的内容都加u'xxx'了呢?是因为content是json格式,python处理的时候要先自动转成unicode格式,而且还要这样显示出来吗?这样,后面要访问data里某个键对应的值的时候,就不用再在内容前面加u'xxx'了?
  1. # -*- coding: cp936 -*-
  2. import urllib2
  3. import json
  4. from city import city
  5. cityname=raw_input("Which city's weather do you want to know?\n")
  6. citycode=city.get(cityname)
  7. print citycode
  8. if citycode:
  9.     try:
  10.         url='http://www.weather.com.cn/data/cityinfo/%s.html'%citycode
  11.         print url
  12.         content=urllib2.urlopen(url).read()
  13.         print content
  14.         data=json.loads(content)
  15.         print data
  16.         print type(content)
  17.         print type(data)
  18.         result=data['weatherinfo']
  19.         str_temp='%s\n%s - %s'%(result['weather'],result['temp1'],result['temp2'])
  20.         print str_temp
  21.     except:
  22.         print 'Query failure.'
  23. else:
  24.     print "Couldn't find the city."
复制代码

Python25.png (19.45 KB, 下载次数: 294)

Python25.png

回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

沙发
发表于 2016-1-23 12:08:56 |显示全部楼层
本帖最后由 catherinemic 于 2016-1-23 12:09 编辑
crossin先生 发表于 2016-1-23 11:13
单独print某个字符串值的时候,print会帮你默认做一次编码。而在list或者dict中直接print,不会对每一个 ...

这里大概明白了,谢谢crossin老师~
那为什么在访问dict的时候,只用写result['weather'],而不用result[u'weather']呢?
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

板凳
发表于 2016-1-24 15:35:19 |显示全部楼层
crossin先生 发表于 2016-1-24 10:04
也是程序默认做了转换

这样啊,谢啦~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-3 08:56 , Processed in 0.027752 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部