Python 3.x 如何循环从PythonDocx获得的列表列表,其中每个列表都是一个表,并将这些表写入单独的工作表中
我使用PythonDocx从一个文档中提取两个表。 我已经遍历了这些表,并创建了一个列表列表。每个列表代表一个表,其中每行都有字典。每个字典都包含一个键/值对。键是表中的列标题,值是该行该列数据的单元格内容。 在为每个表创建数据框并将每个表写入单独的excel表时,我面临着困难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
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的寿命更长