У меня есть список, который я хочу записать в файл CSV, и я хочу, чтобы он был разделен запятой, за которой следует новая строка. Я пробовал writerows, но это разбивает все символы. Я пробовал writerow, но это дает мне все в одной строке, разделенной запятой, но без новой строки для каждой записи.
Моя попытка
import csv
mylist = ['AFCIEUR ID', 'CSCIB25 LX' , 'GAMCOIE ID']
writer = open("my_EQ_IDs.csv", 'w+')
writer_out = csv.writer(writer,delimiter='\n')
fields = ['SYMBOL']
writer_out.writerow(fields)
writer_out.writerows(mylist)
Это дает мне
SYMBOL
A
F
C
I
E
U
R
I
D
C
S
C
I
B
2
5
L
X
G
A
M
C
O
I
E
I
D
Если я использую writerow
вместо writerows
, я получаю следующее
SYMBOL
AFCIEUR ID
CSCIB25 LX
GAMCOIE ID
Это близко к тому, что я хочу, но оно не разделено запятой, как мне нужно. Я пытался добавить разделитель как delimiter=',\n'
, но это выдает ошибку TypeError: "delimiter" must be a 1-character string
Мне нужно (ожидаемый результат)
SYMBOL
AFCIEUR ID,
CSCIB25 LX,
GAMCOIE ID
Может ли кто-нибудь сказать мне, что я делаю неправильно, и указать мне правильное направление?
Очень признателен!
Я попробовал это, и вы получаете ошибку TypeError: "delimiter" must be a 1-character string
попробуйте поставить запятую в разделителе: delimiter=',\n'
Я попробовал это, и вы получаете ошибку TypeError: "delimiter" must be a 1-character string
Попробуйте использовать lineterminator='\n' и delimiter=',' - должно работать.
Это не работает должным образом, оно печатает SYMBOL AFCIEUR ID,CSCIB25 LX,GAMCOIE ID
Самый простой способ, о котором я могу думать, это:
mylist = ['AFCIEUR ID', 'CSCIB25 LX' , 'GAMCOIE ID']
with open('my_output_file.csv','w') as f:
for item in mylist:
f.write(f'{item},\n')
Вы можете использовать f.write(",\n".join(myList)) чтобы избежать запятой
Спасибо, Алек и Фредерик. Решение сработало, и я благодарен за это. Однако был более эффективный ответ, который я принял. Спасибо за вашу помощь!!
Фактический результат вызван тем, что строка является итерируемой. Вы передаете список строк в writerows
, который ожидает итерацию итераций. Таким образом, каждый символ значений воспринимается как поле, за которым следует разделитель полей, который вы установили для новой строки.
Но ожидаемый файл не является допустимым CSV-файлом. Вы используете последовательность ',\n'
(2 символа) в качестве разделителя, когда модуль Python csv определяет разделитель только как один символ. Таким образом, вы не можете ожидать, что модуль csv даст ожидаемый результат...
Это означает, что вы должны написать свой файл вручную. Легко использовать join
:
with open("my_EQ_IDs.csv", 'w+') as writer:
print('SYMBOL', file=writer)
print(',\n'.join(mylist), file=writer)
Большое спасибо @Serge Ballesta! Вы предоставили решение, а также рассказали о join
, который я сейчас изучу.
Можно ли использовать запятую в разделителе? разделитель=',\n'