Python 3.x 如何循环从PythonDocx获得的列表列表,其中每个列表都是一个表,并将这些表写入单独的工作表中

Python 3.x 如何循环从PythonDocx获得的列表列表,其中每个列表都是一个表,并将这些表写入单独的工作表中,python-3.x,pandas,python-docx,pandas.excelwriter,Python 3.x,Pandas,Python Docx,Pandas.excelwriter,我使用PythonDocx从一个文档中提取两个表。 我已经遍历了这些表,并创建了一个列表列表。每个列表代表一个表,其中每行都有字典。每个字典都包含一个键/值对。键是表中的列标题,值是该行该列数据的单元格内容。 在为每个表创建数据框并将每个表写入单独的excel表时,我面临着困难 from docx.api import Document import pandas as pd import csv import json import unicodedata document = Docume

我使用PythonDocx从一个文档中提取两个表。 我已经遍历了这些表,并创建了一个列表列表。每个列表代表一个表,其中每行都有字典。每个字典都包含一个键/值对。键是表中的列标题,值是该行该列数据的单元格内容。 在为每个表创建数据框并将每个表写入单独的excel表时,我面临着困难

from docx.api import Document
import pandas as pd
import csv
import json
import unicodedata

document = Document('Sampletable1.docx')
tables = document.tables
print (len(tables))
big_data = []


for table in document.tables:
    data = []
    Keys = None
    for i, row in enumerate(table.rows):
        text = (cell.text for cell in row.cells)
        if i == 0:
            keys = tuple(text)
            continue
        dic = dict(zip(keys, text))
        data.append(dic)
    big_data.append(data)
 print(big_data)
上述代码的输出为:

二,

[{'Asset':'Growth investments','Target investment mix':'66.50%,'Actual investment mix':'66.30%,'Variance':'-0.20%,{'Asset':'Defensive investment','Target investment mix':'33.50%,'Actual investment mix':'33.70%,'Variance':'0.20%}[{'Owner':'REST Super','Product':'Superannuation','Type':'Existing','Status':'Existing','Customer 2':'Customer 1'},{'Owner':'twuseper TransPension','Product':'TTR Pension','Type':'New','Customer 2':'Customer 1'},{'Owner':'twuseper','Product twuseper','Superannuation','Type':'Existing','Status','Status':'Existing':'existent':'

如何访问上述列表??

此外,我还试图创建一个熊猫数据帧

#write the data into a data frame
for thing in big_data:
    #print(thing)
    df = pd.DataFrame(thing)
    print(df)
    writer = pd.ExcelWriter('dftable3.xlsx', engine='xlsxwriter')
    df.to_excel(writer, sheet_name='Sheet1')
    writer.save()
我在excel上获得了第一个表,但无法使用第二个表。 我希望这两个表位于同一个excel工作簿(dftable3.xlsx)中,但位于不同的工作表(表1、表2)

我已经附上了桌子的图片

提前谢谢

如何访问上述列表

您已经这样做了,通过迭代或打印它们。 考虑使用漂亮的打印库:

import pprint
pprint.pprint(big_data)
我期待…不同的工作表(表1、表2)

考虑到您提供的常量'Sheet1'参数,这不太可能。 以下是实现这一目标的一种方法:

writer = pd.ExcelWriter('dftable3.xlsx', engine='xlsxwriter')
for i, thing in enumerate(big_data):
    df = pd.DataFrame(thing)
    df.to_excel(writer, sheet_name=f'Sheet{i}')
writer.save()
请注意
writer
的范围——它必须比每个组成部分
df
s的寿命更长