Python用docx處理Word中表格時出現的文本重複問題
這兩天用docx
提取Word中表格時, 發現對於稍稍複雜一點的表格就會出現很多重複項, 比如
使用代碼
table_temp = []
path = r"./demo.docx"
document = Document(path)
tables = document.tables
for row in tables[0].rows:
row_temp = []
for cell in row.cells:
row_temp.append(cell.text)
table_temp.append(row_temp)
table_temp
其得到結果部分為
[從何時開始
運行,
2017.10,
每年運行費用(萬元),
每年運行費用(萬元),
每年運行費用(萬元),
2,
場地
面積,
600㎡,
600㎡,
600㎡,
600㎡,
場地產權是否歸團組織(如否,請註明使用年限),
場地產權是否歸團組織(如否,請註明使用年限),
場地產權是否歸團組織(如否,請註明使用年限),
是,
是],
[上級團組織或同級財政是否有配套經費,
無,
配套經費
(萬元),
配套經費
(萬元),
配套經費
(萬元),
,
專職工作人員數,
現有,
現有,
擬安排,
擬安排,
兼職工作人員數,
兼職工作人員數,
兼職工作人員數,
現有,
擬安排],
[上級團組織或同級財政是否有配套經費,
無,
配套經費
(萬元),
配套經費
(萬元),
配套經費
(萬元),
,
專職工作人員數,
最初我試圖跳過已出現的文本, 但是有不少文本本來就是多次出現的, 遂作罷.
之後閱讀了部分源代碼發現, 那些程序性重複文本是對同一個對象的引用, 所以只要在讀取一個值後對其text
置空或者任意自定義的其他, 就可以把後面將要出現的程序性重複項也設置為自定義項.
即
table_temp = []
path = r"demo.docx"
null_text = str(time.time())
document = Document(path)
tables = document.tables
for row in tables[0].rows:
row_temp = []
for cell in row.cells:
if cell.text != null_text:
row_temp.append(cell.text)
cell.text = null_text
table_temp.append(row_temp)
table_temp
可得到
[[申報平台
名稱],
[負責人
是否專職, 負責人
姓 名, 手機],
[平台所在地址及郵編, 聯繫電話 ],
[從何時開始
運行, 每年運行費用(萬元), 場地
面積, 場地產權是否歸團組織(如否,請註明使用年限)],
[上級團組織或同級財政是否有配套經費,
配套經費
(萬元),
專職工作人員數,
現有,
擬安排,
兼職工作人員數,
現有,
擬安排],
[],
[是否與系統團組織共建, 共建單位名稱],
[申請
經費用途],
[綜合服務平台或建設團組織近三年獲得的榮譽],
[已
開
展
的
服
務
項
目, 項目名稱, 項目內容, 服務群體, 服務人數]]
至此, 只要稍稍處理下規則就能愉快地格式化數據了
吐槽:
docx
對於表格的處理真的太麻纏了, 幾乎要被逼換vba
, QWQ
推薦閱讀:
TAG:Python | MicrosoftWord |