求教:Python列表索引超出范围

贾村拓哉 2017-04-26 04:11:55
# Encoding:utf-8

import urllib2
import json

url1 = ('http://m.weather.com.cn/data5/city.xml' )
content1 = urllib2.urlopen(url1).read()
provinces = content1.split(',')

result = 'city = {\n'
url = 'http://m.weather.com.cn/data3/city%s.xml'
for p in provinces:
p_code = p.split('|')[0]
url2 = url % p_code
content2 = urllib2.urlopen(url2).read()
cities = content2.split(',')


for c in cities:
c_code = c.split('|')[0]
url3 = url % c_code
content3 = urllib2.urlopen(url3).read()
districts = content3.split(',')


for d in districts:
d_pair = d.split('|')
d_code = d_pair[0]
name = d_pair[1]
url4 = url % d_code
content4 = urllib2.urlopen(url4).read()
code = content4.split('|')[1]
line = " '%s': '%s',\n" %(name,code)
result += line
print name + ':' + code
result += '}'
f = file('F:\untitled\citys.py','w')
f.write(result)
f.close()

出现下面的错误:
Traceback (most recent call last):
File "F:/untitled/1.py", line 32, in <module>
code = content4.split('|')[1]
IndexError: list index out of range
...全文
868 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
贾村拓哉 2017-04-26
  • 打赏
  • 举报
回复
哦哦可以了,谢了啊
sanGuo_uu 2017-04-26
  • 打赏
  • 举报
回复
引用 2 楼 Jschao 的回复:
这个我还是没怎么听明白,我是刚学的,能不能说的通俗点啊,还有这是咋改的
主要就是加个try,会报错的让它pass就行了
# -*- coding:utf-8 -*-

import urllib2
import json

url1 = ('http://m.weather.com.cn/data5/city.xml' )
content1 = urllib2.urlopen(url1).read()
provinces = content1.split(',')

result = 'city = {\n'
url = 'http://m.weather.com.cn/data3/city%s.xml'
for p in provinces:
    p_code = p.split('|')[0]
    url2 = url % p_code
    content2 = urllib2.urlopen(url2).read()
    cities = content2.split(',')


    for c in cities:
        c_code = c.split('|')[0]
        url3 = url % c_code
        content3 = urllib2.urlopen(url3).read()
        districts = content3.split(',')


        for d in districts:
            d_pair = d.split('|')
            d_code = d_pair[0]
            name = d_pair[1]
            url4 = url % d_code
            content4 = urllib2.urlopen(url4).read()
            try:
            	code = content4.split('|')[1]
            	line = "  '%s': '%s',\n" %(name,code)
            	result += line
            	print name + ':' + code
            except:
            	pass
result += '}'
f = open('D:/testP/zzr.txt','w')
f.write(result)
f.close()
贾村拓哉 2017-04-26
  • 打赏
  • 举报
回复
这个我还是没怎么听明白,我是刚学的,能不能说的通俗点啊,还有这是咋改的
sanGuo_uu 2017-04-26
  • 打赏
  • 举报
回复
code = content4.split('|')[1] 很明显,split后,某些时候,它没有第二个数据,所以就报错了

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧