#python #csv
#python #csv
Вопрос:
Я пытаюсь написать код, который получает список строк и записывает csv-файл, содержащий все эти строки в одной строке. вот что я получил до сих пор-
import csv
l = ['column1', 'column2',....]
with open('csvfile', 'w', newline='') as f:
writer = csv.writer(f, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for x in range(1):
writer.writerow(l)
Я хочу, чтобы файл выглядел так:
column1 column2,...
но по какой-то причине это выглядит так:
column1 column2,...<n>
Я использую Windows и python 3.6.7.
Заранее спасибо!
Комментарии:
1. Файл CSV содержит данные в строках. Это означает, что в конце каждой записи есть новая строка. Вы бы хотели, чтобы CSV-файл с двумя записями выглядел так?
2. @zvone wdym ? Я понимаю первые два предложения, но у меня есть только одна запись в моем файле.
3. У вас всегда есть только два значения? Почему вы используете CSV writer для этого? Это не CSV.
4. например, значения в запросе. Я должен это изменить — в списке может быть бесконечное количество значений
5. Правильный способ сохранить это в CSV — это иметь один столбец и столько строк, сколько есть значений. В любом случае, я действительно не понимаю, какую проблему вы пытаетесь решить.
Ответ №1:
Вам не нужно использовать csv.writter
, вы можете просто сделать это с помощью обработчиков файлов Python. Также не используйте list
в качестве имени переменной ключевое слово a в Python.
list_columns = ['column1', 'column2', 'column3']
f = open('csvfile.csv', 'w')
for item in list_columns:
f.write(item)
f.write(' ')
f.close()
Вывод: column1 column2 column3
Ответ №2:
Если вы хотите использовать csv.writer
, вам нужно будет записать в строковый буфер, а затем выполнить некоторое редактирование:
import csv
from io import StringIO
l = ['column1', 'column2']
out = StringIO('')
writer = csv.writer(out, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for x in range(4):
writer.writerow(l)
# replace newlines with single space and get rid of carriage returns:
rows = out.getvalue().replace('n', ' ').replace('r', '')
# final character is a space. Don't output:
with open('csvfile', 'w') as f:
f.write(rows[0:-1])