2016-06-22 17 views
1

url_dataのループを試みました。 url_dataは文字列の配列です。私は読みIndexErrorを得る:Pythonで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 
+1

'keywords'は空のリストに初期化されます。したがって、有効なインデックスはありません。ループは複数回、インデックスとして 'i'を使用しようとしますが、(1)' i'は明らかに整数ではありません。(2)それがあっても、すべてが*空のリストの範囲外です。 –

+0

'keywords'はエラーです。しかし、エラーメッセージは 'url_data [i]'に関するものです。 'url_data'と' i'は 'str'です。 'str [str]'は動作しません – qvpham

答えて

1

ではなく

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

'xrange(len(list))'はpythonicな方法ではありません。 –

1

あなたはそれが間違ってやっているこのループを試してみてください。要素とインデックスの両方が必要な場合は、enumerate()を使用します。空listあるので、あなたもそのためIndexErrorを取得しますkeywordsの問題に来

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.append(urlparse.urlparse(url)) 
0

のいずれかでなければなりません:

keywords = {} 
keywords = dict() 

print(i)あなたがやっているかを把握します。

関連する問題