我想将列表列表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中还有其他模块可以帮助实现这一点吗?
答案 0 :(得分:1)
您可以通过将列表列表转换为字符串来解决此问题。例如
>>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']]
希望这能回答您的问题。
答案 1 :(得分:1)
您可以使用内置函数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可能更好。