Написать список в ячейку в Excel, используя Python - PullRequest
0 голосов
/ 28 февраля 2019

Я хотел бы написать список списков: k = [['1','a'],['2','b'],['3','c']] - в ячейку на листе Python excel.

Мой код:

workbook = xlsxwriter.Workbook('names.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write('A1', 'Generic Name')

Я пробовал: worksheet.write_row('B1', allmajor) который заставляет содержимое списка k записываться в отдельных ячейках (B1, C1, D1 ..).

Выполнение: worksheet.write('B1', ','.join(k)) приводит к тому, что у узлов ячейки B1 будут строки типа - '1','a','2','b','3','c'

Есть ли способ, которым я могу записать список в ячейку так, чтобы ячейка B1 выглядела как [['1','a'],['2','b'],['3','c']]?Есть ли какой-либо другой модуль в Python, который может облегчить это?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Вы можете использовать встроенную функцию repr, которая дает строковое представление объекта списка:

worksheet.write('B1', repr(k))

В приглашении Python вы можете увидеть, как он работает:

>>> k = [['1','a'],['2','b'],['3','c']]
>>> k
[['1', 'a'], ['2', 'b'], ['3', 'c']]
>>> repr(k)
"[['1', 'a'], ['2', 'b'], ['3', 'c']]"
>>> print(repr(k))
[['1', 'a'], ['2', 'b'], ['3', 'c']]

В случае вашей простой структуры списка вы можете просто привести ее к строке, например, str(k), но repr, вероятно, лучше для этого случая.

0 голосов
/ 28 февраля 2019

Вы можете позаботиться об этом, преобразовав свой список в строку.Например,

>>import pandas as pd
>>list1=[['1','a'],['2','b'],['3','c']]
>>list2=[['4','a'],['5','b'],['6','c']]
>>df=pd.DataFrame({'a':[str(list1), str(list2)]]})

Теперь, когда вы сохраняете его в формате через запятую, каждый элемент будет рассматриваться как строка.Когда вы читаете это обратно из файла, вы можете использовать ast, чтобы преобразовать его обратно в список списков.

>>import ast
>>[ast.literal_eval(i) for i in df['a']]

Надеюсь, это ответит на ваш вопрос.

...