#python #excel #python-3.x
#python #excel #python-3.x
Вопрос:
это мой список
list=['a','b','c']
при использовании этого кода
with open('commentafterlink.csv', 'w') as f:
f.write("%sn" % list)
он хранит каждый токен списка в одной ячейке, но мне нужно сохранить весь список в одной ячейке.в чем проблема?
Комментарии:
1. ищите
join()
Ответ №1:
Можете ли вы попробовать следующее:
import xlwt
from xlwt import Workbook
# Workbook is created
wb = Workbook()
# add_sheet is used to create sheet.
sheet1 = wb.add_sheet('Sheet 1')
# sheet1.write(1, 0, ' '.join(list))
# if you want the output to be ['a','b','c']
sheet1.write(1, 0, str(list))
wb.save('xlwt example.xls')
Вывод:
Ответ №2:
1) Вы пишете не файл Excel, а файл CSV (который Excel знает, как импортировать).
2) Вы записываете в файл CSV, как если бы это был текстовый файл, не соблюдая семантику CSV. CSV означает «значения, разделенные запятыми». Если он содержит текст ['a','b','c']
, он будет интерпретироваться как три столбца: ['a'
и 'b'
и 'c']
. Вам нужно будет заключить значение в кавычки, чтобы сделать это правильно; кавычка по умолчанию в CSV — это двойная кавычка. Итак, если вы напишете "['a','b','c']"
, это будет импортировано в Excel как одна ячейка. Однако,
3) Вы пишете CSV-файл вручную, что означает, что очень легко получить неправильный формат (например, забыть экранировать то, что нужно экранировать). В общем, всякий раз, когда вы записываете файл с установленным форматом, стоит проверить, есть ли у формата библиотека, которая знает, как с ним обращаться. Python изначально знает, как записывать CSV-файлы с помощью csv
модуля, и он знает, как записывать файлы Excel с помощью пакетов, которые вы можете установить с помощью pip
, например xlwt
.
Вот как правильно записать CSV-файл:
my_list = ['a', 'b', 'c']
import csv
with open('commentafterlink.csv', 'w') as w:
writer = csv.writer(w)
writer.writerow([str(my_list)])
Примечание: перезаписывать встроенные переменные Python, такие как list
.
(Я вижу, что другой ответчик уже предоставил вам решение, специфичное для Excel xlwt
.)
Ответ №3:
Используя join()
:
lst=['a','b','c']
with open('commentafterlink.csv', 'w') as f:
f.write("%sn" % "".join(lst))
ВЫВОД:
Редактировать:
Используя repr()
:
import xlsxwriter
lst=['a','b','c'] # avoid using list keyword
workbook = xlsxwriter.Workbook('commentafterlink.xlsx') # create/read the file
worksheet = workbook.add_worksheet() # adding a worksheet
worksheet.write('A1', repr(lst)) # write repr(lst) to cell A1
workbook.close() # close the file
ВЫВОД:
Комментарии:
1. вывод должен быть: [‘a’,’b’,’c’] не abc