Подтвердить что ты не робот

Запись списка строк в файл CSV Excel в Python

Я пытаюсь создать CSV файл, который содержит содержимое списка строк в Python, используя скрипт ниже. Однако, когда я проверяю свой выходной файл, оказывается, что каждый символ отделяется запятой. Как я могу дать команду csv.writer разделять каждую отдельную строку в списке, а не каждый символ?

import csv

RESULTS = ['apple','cherry','orange','pineapple','strawberry']

result_file = open("output.csv",'wb')
wr = csv.writer(result_file, dialect='excel')
for item in RESULTS:
    wr.writerow(item)

Я проверил PEP 305 и не смог найти ничего конкретного.

4b9b3361

Ответ 1

Метод csv.writer writerow принимает в качестве аргумента итерацию. Ваш набор результатов должен быть списком (строками) списков (столбцов).

csvwriter.writerow(row)

Записать параметр строки в объект файла Writers, отформатированный в соответствии с текущим диалектом.

Сделайте либо:

import csv
RESULTS = [
    ['apple','cherry','orange','pineapple','strawberry']
]
with open('output.csv','wb') as result_file:
    wr = csv.writer(result_file, dialect='excel')
    wr.writerows(RESULTS)

или:

import csv
RESULT = ['apple','cherry','orange','pineapple','strawberry']
with open('output.csv','wb') as result_file:
    wr = csv.writer(result_file, dialect='excel')
    wr.writerow(RESULT)

Ответ 2

Очень просто исправить, вам просто нужно включить параметр для записи в список.

for item in RESULTS:
     wr.writerow([item,])

Ответ 3

Я знаю, что немного опоздал, но что-то, что я нашел, что работает (и не требует использования csv), - это написать цикл for, который записывает в ваш файл для каждого элемента в вашем списке.

# Define Data
RESULTS = ['apple','cherry','orange','pineapple','strawberry']

# Open File
resultFyle = open("output.csv",'w')

# Write data to file
for r in RESULTS:
    resultFyle.write(r + "\n")
resultFyle.close()

Я не знаю, было ли это решение лучше, чем те, которые уже были предложены, но он более точно отражает вашу оригинальную логику, поэтому я думал, что буду делиться.

Ответ 4

Пример - написать несколько строк с логическим столбцом (используя приведенный выше пример GaretJax и Eran?).

import csv
RESULT = [['IsBerry','FruitName'],
          [False,'apple'],
          [True, 'cherry'],
          [False,'orange'],
          [False,'pineapple'],
          [True, 'strawberry']]
with open("../datasets/dashdb.csv", 'wb') as resultFile:
    wr = csv.writer(resultFile, dialect='excel')
    wr.writerows(RESULT)

Результат:

df_data_4 = pd.read_csv('../datasets/dashdb.csv')
df_data_4.head()

Выход:

   IsBerry  FruitName
   0    False   apple
   1    True    cherry
   2    False   orange
   3    False   pineapple
   4    True    strawberry