Python 如何处理列表索引超出范围?
在下面的代码中,Python 如何处理列表索引超出范围?,python,list,Python,List,在下面的代码中,t1是一个包含500000个字符串的列表。我将其拆分,并通过按日期匹配来提取每个字符串开头可用的id tid=[] for t in t1: dc=t.split("\t") if dc[7]=='2015-11-04': tid.append(dc[0]) len(tid) 但我得到了一个错误: -------------------------------------------------------------------
t1
是一个包含500000个字符串的列表。我将其拆分,并通过按日期匹配来提取每个字符串开头可用的id
tid=[]
for t in t1:
dc=t.split("\t")
if dc[7]=='2015-11-04':
tid.append(dc[0])
len(tid)
但我得到了一个错误:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-6-807d6fb08067> in <module>
2 for t in t1:
3 dc=t.split("\t")
----> 4 if dc[7]=='2015-11-04':
5 tid.append(dc[0])
6 del dc[:]
IndexError: list index out of range
---------------------------------------------------------------------------
索引器回溯(最后一次最近调用)
在里面
2对于t1中的t:
3 dc=t.分割(“\t”)
---->4如果dc[7]=“2015-11-04”:
5 tid.追加(dc[0])
6德尔dc[:]
索引器:列表索引超出范围
是否有其他方法来执行此操作或如何解决此错误?在访问第n个元素之前,必须检查列表中是否至少有n个元素
tid=[]
for t in t1:
dc=t.split("\t")
if len(dc) > 7 and dc[7]=='2015-11-04':
tid.append(dc[0])
len(tid)
在访问第n个元素之前,必须检查列表中是否至少有n个元素
tid=[]
for t in t1:
dc=t.split("\t")
if len(dc) > 7 and dc[7]=='2015-11-04':
tid.append(dc[0])
len(tid)
这意味着dc的长度小于8个元素 这也意味着tc在字符串中没有八个'\t'字符
打印(repr(t))以查看t由什么组成。这意味着dc的长度小于8个元素 这也意味着tc在字符串中没有八个'\t'字符
执行
打印(repr(t))
以查看t由什么组成。您始终可以使用尝试,除了代码块来处理此问题
例如:
tid=[]
对于t1中的t:
dc=t.split(“\t”)
尝试:
如果dc[7]=“2015-11-04”:
tid.追加(dc[0])
除索引器外:
通过
莱恩(工业贸易署)
您始终可以使用try
来处理此问题,但
代码块除外
例如:
tid=[]
对于t1中的t:
dc=t.split(“\t”)
尝试:
如果dc[7]=“2015-11-04”:
tid.追加(dc[0])
除索引器外:
通过
莱恩(工业贸易署)
处理异常是一种方法:
tid=[]
for t in t1:
dc=t.split("\t")
try:
if dc[7]=='2015-11-04':
tid.append(dc[0])
except IndexError:
print("index error")
len(tid)
处理异常是一种方法:
tid=[]
for t in t1:
dc=t.split("\t")
try:
if dc[7]=='2015-11-04':
tid.append(dc[0])
except IndexError:
print("index error")
len(tid)
你能提供一个t1
的例子吗?请提供预期的结果。显示中间结果与您预期的不同之处。我们应该能够复制和粘贴一个连续的代码块,执行该文件,并再现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和期望的输出来测试我们的建议。在错误点之前打印出有问题的值;你怎么会对这些值感到困惑?@Sushil“599958136804507649\tantallyon\t381421483\tfr\tAndroid平板电脑的Witter\tprofile_images/564397209450340352/SYbHdjhm_normal.jpeg\tSun\t2015-05-17\t55341\t1431876141\tRT DanielPilotte:HONTEÀCHRISTIANE TAUBIRA la garde des sots Qui des de plus en en plus比赛…”这是t1中的一个字符串。这是列表形式还是字符串形式?@Sushil是的,它是字符串形式,这是一个字符串。您可以提供t1
的示例吗?请提供预期的示例。显示中间结果与您预期的不同之处。我们应该能够复制和粘贴一个连续的代码块,执行该文件,并再现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和期望的输出来测试我们的建议。在错误点之前打印出有问题的值;你怎么会对这些值感到困惑?@Sushil“599958136804507649\tantallyon\t381421483\tfr\tAndroid平板电脑的Witter\tprofile_images/564397209450340352/SYbHdjhm_normal.jpeg\tSun\t2015-05-17\t55341\t1431876141\tRT DanielPilotte:HONTEÀCHRISTIANE TAUBIRA la garde des sots Qui des de plus en en plus比赛…”这是T1中字符串的一个,是列表形式还是字符串形式?@Sushil是的,它是字符串形式,这是一个字符串