2015-09-13 16 views
16

私は最終的にcsvファイルに入れて1つの配列にマージしたい2つのリストを持っています。私は、Pythonのアレイと初心者だと私は、私はこのエラーを回避する方法を理解していない:TypeError:リストインデックスはstrではなく整数またはスライスでなければなりません

def fill_csv(self, array_urls, array_dates, csv_file_path): 
    result_array = [] 
    array_length = str(len(array_dates)) 

    # We fill the CSV file 
    file = open(csv_file_path, "w") 
    csv_file = csv.writer(file, delimiter=';', lineterminator='\n') 

    # We merge the two arrays in one 

    for i in array_length: 
     result_array[i][0].append(array_urls[i]) 
     result_array[i][1].append(array_dates[i]) 
     i += 1 

    csv_file.writerows(result_array) 

をそして得た:

File "C:\Users\--\gcscan.py", line 63, in fill_csv 
    result_array[i][0].append(array_urls[i]) 
TypeError: list indices must be integers or slices, not str 

どのように私のカウント作業をすることができますか?

+2

あなたは明示的に 'array_length'を文字列にするので、' i'は数字ではない文字です... – jonrsharpe

+0

Ooops、私は正しい方法を見ていなかった....ありがと! – Zoloom

+1

これは実際に私が '' {'thisthing}' 'を解析しているときに私が '{thisthing}'を解析していると思ったときに起こったことです。たとえば、辞書を扱おうとしていましたが、実際にはリストを扱っていました。動的タイピングftw。 – Tommy

答えて

10

まず、array_length整数ではなく文字列でなければならない:

array_length = len(array_dates) 

第二に、あなたのforループはrangeを使用して構築する必要があります。

for i in range(array_length): # Use `xrange` for python 2. 

第三に、iは自動的にインクリメントするので、削除させていただきます次の行:

i += 1 
+0

ありがとう、私は自動増分を知らなかった! :)私のコードは動作します、ありがとう。 – Zoloom

+0

魔法はありません: 'i'は範囲(またはpython 3のシーケンス)によって返されるリストの要素です。ああ、BTW:それらはすべてリストであり、配列ではありません。 – Pynchia

関連する問題