1. city.py 파일에 도시 이름에 해당하는 도시 번호를 포함시키고 이 번호를 사용하여 중국 기상 네트워크의 데이터를 쿼리했습니다.
데이터 형식의 일부는 다음과 같습니다.
<code>city = { '北京': '101010100', '海淀': '101010200', '朝阳': '101010300', '顺义': '101010400', '怀柔': '101010500', '通州': '101010600', '昌平': '101010700', '延庆': '101010800', '丰台': '101010900', '石景山': '101011000', '大兴': '101011100', '房山': '101011200', '密云': '101011300', '门头沟': '101011400', '平谷': '101011500', </code>
여기 내 코드가 있습니다
<code># -*- coding:utf-8 -*- import urllib3 import json from city import city cityname = input('您想查询哪个城市的天气?\n') citycode = city.get(cityname) if citycode: url = ('http://www.weather.com.cn/data/cityinfo/%s.html'%citycode) content = urllib3.urlopen(url).read() print(content) </code>
실행 오류 메시지:
<code>D:\learnpy\weather python weather.py 杭州 Traceback (most recent call last): File "weather.py", line 7, in <module> cityname = input() EOFError </code>
어떤 단계가 잘못되었나요?
1. city.py 파일에 도시 이름에 해당하는 도시 번호를 포함시키고 이 번호를 사용하여 중국 기상 네트워크의 데이터를 쿼리했습니다.
데이터 형식의 일부는 다음과 같습니다.
<code>city = { '北京': '101010100', '海淀': '101010200', '朝阳': '101010300', '顺义': '101010400', '怀柔': '101010500', '通州': '101010600', '昌平': '101010700', '延庆': '101010800', '丰台': '101010900', '石景山': '101011000', '大兴': '101011100', '房山': '101011200', '密云': '101011300', '门头沟': '101011400', '平谷': '101011500', </code>
여기 내 코드가 있습니다
<code># -*- coding:utf-8 -*- import urllib3 import json from city import city cityname = input('您想查询哪个城市的天气?\n') citycode = city.get(cityname) if citycode: url = ('http://www.weather.com.cn/data/cityinfo/%s.html'%citycode) content = urllib3.urlopen(url).read() print(content) </code>
실행 오류 메시지:
<code>D:\learnpy\weather python weather.py 杭州 Traceback (most recent call last): File "weather.py", line 7, in <module> cityname = input() EOFError </code>
어떤 단계가 잘못되었나요?
EOFError
오류는 예상치 못한 결말이 발생했기 때문에 발생합니다. 이는 sublime
버그로 간주됩니다. 해결하려면 여기
Sublime Text 2 내에서 대화형으로 Python 실행
게다가 requests
을 사용하는 것이 좋습니다. urllibx
시리즈는 너무 사기적이어서 코드를 변경했는데 기본적으로 사용 가능합니다
<code>import json import requests from city import city cityname = input('您想查询哪个城市的天气?\n') citycode = city[cityname] if citycode: url = ('http://www.weather.com.cn/data/cityinfo/%s.html' % citycode) content = requests.get(url) string = content.text.encode(content.encoding).decode("utf-8") print(json.dumps(json.loads(string), ensure_ascii=False, indent=4)) </code>
출력
<code>您想查询哪个城市的天气? 北京 { "weatherinfo": { "ptime": "18:00", "weather": "晴", "cityid": "101010100", "temp2": "16℃", "temp1": "-2℃", "city": "北京", "img2": "d0.gif", "img1": "n0.gif" } } </code>
sunlime text를 사용하여 코드를 편집하고 있나요? IDLE 또는 pycharm을 사용하여 코드를 시험해 보고 결과를 얻을 수 있는지 확인할 수 있습니다.
입력 함수를 sys.stdin.readline()으로 변경해 보세요
<code class="python">import sys city = sys.stdin.readline()[:-1:] # readline函数的返回值会包括换行符</code>