2015-09-13 30 views
16

Nihayet bir csv dosyasına yerleştirmek için bir dizide birleştirmek istediğim iki liste var. Python'ın diziler ile acemi değilim ve bu hatayı önlemek nasıl anlamıyorum:TypeError: liste indisleri tamsayı veya dilimler olmalı, str değil

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) 

Ve var:

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 

nasıl sayımı çalışmaları can? Senin for döngü range kullanılarak inşa edilmelidir

array_length = len(array_dates) 

İkincisi:

+2

Açıkça 'array_length' bir dizge yaparsınız, bu yüzden ben bir karakter değil bir sayıdır ... – jonrsharpe

+0

Ooops, doğru şekilde bakmadım .... teşekkür ederim! – Zoloom

+1

bu, aslında ben [{thisthing}] '; Örneğin, bir sözlükle uğraşmaya çalışıyordum ama aslında bir liste ile uğraşıyordum. Dinamik yazım ftw. – Tommy

cevap

10

Öncelikle array_length bir tamsayı ve bir dizi olmalıdır

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

Üçüncüsü, i otomatik artırır, bu yüzden silecektir aşağıdaki satır:

i += 1 
+0

Teşekkürler, otomatik artımı bilmiyordum! :) Kodum işe yarıyor, teşekkürler. – Zoloom

+0

Hiç sihir yok: '' ', menzil tarafından döndürülen listenin bir öğesidir (veya python 3'te sıra). Oh, BTW: hepsi listeler, diziler değil. – Pynchia

İlgili konular