web-dev-qa-db-ja.com

TypeError:リストインデックスは、strではなく整数またはスライスでなければなりません

最終的にcsvファイルに入れるために、1つの配列にマージしたい2つのリストがあります。私はPythonの配列の初心者であり、このエラーを回避する方法がわかりません。

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

カウントはどのように機能しますか?

33
Zoloom

まず、array_lengthは文字列ではなく整数である必要があります。

array_length = len(array_dates)

次に、forループをrangeを使用して構築する必要があります。

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

3番目に、iは自動的に増分するため、次の行を削除します。

i += 1
29
Alexander

私は同じエラーがありましたが、リストと辞書をリストに追加し、辞書のリストを繰り返し使用してリストオブジェクトをヒットしたときに、このエラーが発生しました。

これはコードエラーであり、そのリストに辞書オブジェクトのみを追加して、問題も解決したことを確認しました。

1