我有两个列表,想要合并为一个数组,最后将其放入 csv 文件中。
如何避免此错误:
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
我的计数怎样进行?
您遇到的错误是由于代码中索引和列表操作处理不正确造成的。让我们分解并修复您的fill_csv函数:
fill_csv
array_length
array_dates
result_array[i][0].append(array_urls[i])
result_array[i][0]
result_array
这是该函数的更正版本fill_csv:
import csv def fill_csv(self, array_urls, array_dates, csv_file_path): result_array = [] # We assume both lists are of the same length for i in range(len(array_dates)): # Append each pair of URL and date to the result_array result_array.append([array_urls[i], array_dates[i]]) # Write to CSV file with open(csv_file_path, "w", newline='') as file: csv_file = csv.writer(file, delimiter=';', lineterminator='\n') csv_file.writerows(result_array)
range(len(array_dates))
[array_urls[i], array_dates[i]]
with open(...) as file
此函数现在将array_urls和合并array_dates为一个列表列表(result_array),其中每个内部列表包含一个 URL 及其对应的日期。然后它将此列表写入指定的 CSV 文件。
array_urls