利用python-docx更新word中的表格內容
阿新 • • 發佈:2019-02-17
收到實驗組小妹妹一個需求, 希望把一個巨大word文件中所有表格裡的所有一位小數隨機新增一位數變成兩位小數, 從學術角度我開始是拒絕的, 但是, 妹子需求哪有不滿足的道理, so...
記錄下我解決這個問題的流程:
- 聽取妹子需求, 然後大概評估這個活應該可以用
Python
來做 - 需求準確歸納: 給所有文件中表格內一位小數後加一位隨機數使之變成兩位小數
- 商量一個deadline: 因為沒做過, 不能打包票, 所以暫定第二天上班給結果
- 拿到原始資料開始找輪子擼
- Google 找到 python-docx 這個 package 可以做這件事
- 問題分解
- 解析 docx
-
遍歷所有表格
- 正則匹配一位小數
- 生成隨機小數補位
- 儲存
-
交給妹子, 收穫膝蓋
放碼
找到靠譜輪子就是爽, 幾行程式碼解決戰鬥, 十分鐘完成任務
import random import re from docx import Document # 原始檔 test.docx doc = Document("test.docx") # 正則匹配所有一位小數 p = re.compile("^[0-9]+\.[0-9]{1}$") # 遍歷所有表格 for table in doc.tables: for row in table.rows: for cell in row.cells: ifre.search(p, cell.text): # 匹配小數並在後面補齊一位小數 cell.text += str(random.randint(0, 9)) doc.save("test_update.docx")