Как написать список в одной ячейке Excel с помощью python

#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
 

ВЫВОД:

out

Комментарии:

1. вывод должен быть: [‘a’,’b’,’c’] не abc