请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

【Python 第46课】 查天气(4)

  [复制链接]

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-8-30 10:51:27 |显示全部楼层
aruhuredo 发表于 2018-8-30 10:47
Crossin,你好。
我尝试将这个网页上的记录城市编码的数据(这个网页上共有349个城市)做整理,当作练习。
...

没有限制,除非超过内存大小,但应该不是这个问题
很可能还是你代码在处理上有些bug
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

24

积分

新手上路

Rank: 1

发表于 2018-8-30 15:34:27 |显示全部楼层
crossin先生 发表于 2018-8-30 10:51
没有限制,除非超过内存大小,但应该不是这个问题
很可能还是你代码在处理上有些bug ...

哦 又检查了下 发现数据是完整的
但次序好像和原始数据完全不一样,打乱了。。。
这也是我代码上的bug嘛
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-8-30 22:08:54 |显示全部楼层
aruhuredo 发表于 2018-8-30 15:34
哦 又检查了下 发现数据是完整的
但次序好像和原始数据完全不一样,打乱了。。。
这也是我代码上的bug嘛

dict是无序的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

24

积分

新手上路

Rank: 1

发表于 2018-9-25 20:58:10 |显示全部楼层
我是py3,前面的代码都没什么问题,print出来的都很正常,但最后write的时候就会报错,会新建一个city1.py的文件,但是是空白的,求问是怎么回事
报错信息如下:
Traceback (most recent call last):
  File "C:\Users\Hz\AppData\Local\Programs\Python\Python37-32\practice.py", line 41, in <module>
    f.write(result)
  File "C:\Users\Hz\AppData\Local\Programs\Python\Python37-32\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u53bf' in position 15: character maps to <undefined>
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-9-25 22:59:02 |显示全部楼层
Gen 发表于 2018-9-25 20:58
我是py3,前面的代码都没什么问题,print出来的都很正常,但最后write的时候就会报错,会新建一个city1.py ...

写入时候编码报错,但我无法判断你这个是什么问题

你尝试 open 里加上参数 encoding='utf8' ,不行gbk也试下
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

36

积分

新手上路

Rank: 1

发表于 2018-10-15 15:29:58 |显示全部楼层
import urllib.request
import json

url1 = 'http://m.weather.com.cn/data3/city.xml'
content1 = urllib.request.urlopen(url1).read()
provinces = content1.split(str.encode(','))
#data = json.loads(provinces)

print(provinces)

这是我的代码,注释的【data】那一行会报错,这个输出之后是乱码,例如【b'00|\xe7\x9c\x81】
请问这个怎么解决啊
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-10-15 22:16:54 |显示全部楼层
marvinmi 发表于 2018-10-15 15:29
import urllib.request
import json

这个拿到的数据本来就不是json,例子里没这么写啊

输出带b,是bytes,要 .decode('utf8') 转成 str 类型
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

发表于 2018-10-16 13:39:14 |显示全部楼层
http://m.weather.com.cn/data3/city.xml

This page contains the following errors:
error on line 1 at column 1: Document is empty
Below is a rendering of the page up to the first error.
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-10-17 15:46:36 |显示全部楼层
amy0808 发表于 2018-10-16 13:39
http://m.weather.com.cn/data3/city.xml

This page contains the following errors:

不用理,因为它格式不是标准 html 或者 json。直接代码拿返回字符串出来看你就知道了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

8

积分

新手上路

Rank: 1

发表于 2018-10-23 21:14:33 |显示全部楼层
provinces=content1.split(',')
在这一步报错,TypeError: a bytes-like object is required, not 'str'
不知什么原因
回复

使用道具 举报

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

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

GMT+8, 2024-3-29 23:34 , Processed in 0.025777 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部