csvwriter.writerow ожидал список в качестве входных данных.
Таким образом, когда вы пишете This is first | element
, данные преобразуются в ['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'f', 'i', 'r', 's', 't', ' ', '|', ' ', 'e', 'l', 'e', 'm', 'e', 'n', 't']
, и это отражается в CSV.
Вам нужно будет обернуть каждый элемент в вашем списке в другой список, поэтому результирующий список будет [['This is first | element'], ['This is second | element'], ['This is third | element']]
, который вы можете записать в CSV.
Код изменится на.
result = ['This is first | element', 'This is second | element', 'This is third | element']
#Convert result to list of lists
li = [[item] for item in result]
import csv
with open('file.csv', 'w', newline='') as csvfile:
filewriter = csv.writer(csvfile)
#Write each list to csv
for item in li:
filewriter.writerow(item)
csvfile.flush()
csvfile.close()
Вы также можете избавиться от цикла for, используя csvwriter.writerows следующим образом.
result = ['This is first | element', 'This is second | element', 'This is third | element']
li = [[item] for item in result]
import csv
with open('file.csv', 'w', newline='') as csvfile:
filewriter = csv.writer(csvfile)
filewriter.writerows(li)
csvfile.flush()
csvfile.close()
В обоих случаях CSV будет:
This is first | element
This is second | element
This is third | element