【问题标题】:How to loop without getting IndexError on python?如何在没有在 python 上获取 IndexError 的情况下循环?
【发布时间】:2016-06-22 07:37:31
【问题描述】:

我尝试循环查找url_dataurl_data 是一个字符串数组。我得到一个IndexError,上面写着:

keywords[i]=urlparse.urlparse(url_data[i])
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

我的代码:

import os
import csv
import numpy as np
import pandas
import urlparse
from numpy import genfromtxt

os.chdir("C:\Users\EDAWES01\Desktop\Cookie profiling")
data = pandas.read_csv('activity_url.csv', delimiter=';')
data_read=np.array(data)
quantity = data_read[:, 2]
url_data = data_read[quantity==1][:,1] 
url_data #extract URL data

keywords=[]

for i in url_data:
  keywords[i]=urlparse.urlparse(url_data[i])
  keywords[i]=keywords[2] #this is the path element
  keywords[i]=keywords[i].split("/")

keywords

【问题讨论】:

  • keywords 被初始化为一个空列表。所以没有有效的索引。循环尝试多次使用i 作为索引,但是(1)i 显然不是整数,并且(2)即使是,它也会超出范围,因为它们是 全部超出了空列表的范围。
  • keywords 是一个错误。但错误信息是关于url_data[i]url_dataistrstr[str] 不起作用

标签: python loops indexing


【解决方案1】:

试试这个循环

for i in xrange(0,len(url_data)):
     keywords[i]=urlparse.urlparse(url_data[i])

【讨论】:

  • xrange(len(list)) 不是 Python 的方式。
【解决方案2】:

你做错了。如果您需要元素和索引,请使用enumerate()

for idx,url in enumerate(url_data):
    keywords[idx]=urlparse.urlparse(url_data[idx])
    # or it could be
    keywords[idx]=urlparse.urlparse(url)  
    # both of these will still raise IndexError for keywords

现在,谈到keywords 的问题,它是一个空的list,所以你也会得到IndexError。我认为您想改为执行以下操作。

keywords.append(urlparse.urlparse(url))

【讨论】:

    【解决方案3】:

    从您的代码关键字看起来应该是:

    keywords = {}
    keywords = dict()
    

    print(i) 弄清楚你在做什么。

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多