欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何基于Python實(shí)現(xiàn)word文檔重新排版

 更新時(shí)間:2020年09月29日 08:34:29   作者:NiceThing  
這篇文章主要介紹了如何基于Python實(shí)現(xiàn)word文檔重新排版,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

介紹

舍友從網(wǎng)上下載的word題庫文檔很亂,手動(dòng)改了大半天才改了一點(diǎn),想起python是大名鼎鼎的自動(dòng)化腳本,于是乎開始了python對(duì)word的一頓瞎操作。

分析需求

對(duì)文檔中的內(nèi)容進(jìn)行分析,只留下題目,選項(xiàng),并且題號(hào)要從1開始。

編寫代碼

pip安裝python-docx模塊

讀取word文檔內(nèi)容(如果是以.doc后綴的文件需另存為.docx文件?。?/p>

from docx import Document

# 打開文件
srcdocx = Document(‘src.docx‘)
# 遍歷所有段落
for p in srcdocx.paragraphs:
  print(p.text)

輸出效果:

分析所需要?jiǎng)h除的內(nèi)容:

需求1:

1
42.對(duì)餐后血糖顯著升高的2型糖尿病者,可選用下列哪種藥物(5.0分)

刪除多余數(shù)字行

需求2:

42.對(duì)餐后血糖顯著升高的2型糖尿病者,可選用下列哪種藥物(5.0分)
修改正確的題目序號(hào)

需求3:

刪除“窗體底端”“窗體頂端”

需求4:

A、
阿卡波糖
選項(xiàng)合成一行

需求5:

刪除多余空白行

編寫代碼

本質(zhì)上來講,實(shí)現(xiàn)就是從源文檔中取出一段文字進(jìn)行處理操作,然后保存到目標(biāo)文檔。

其中,需求1,3,5的實(shí)現(xiàn),只需要判斷一下取出的內(nèi)容是否是需要?jiǎng)h除的內(nèi)容,如果是,則不用保存到目標(biāo)文檔中,這樣就實(shí)現(xiàn)了“間接刪除”。

對(duì)于需求2的實(shí)現(xiàn),通過觀察我們不難發(fā)現(xiàn),序號(hào)后面總有一個(gè)". ",所以我們只需要獲取到這個(gè)的坐標(biāo),把前面的錯(cuò)誤序號(hào)刪除,插入正確的序號(hào)到處理字符串,最后保存到新文檔,這樣就完成了“修正題目序號(hào)”。

需求4的實(shí)現(xiàn)類似需求2,只需要找到 “、” 符號(hào)就行,然后進(jìn)行類似操作,就能實(shí)現(xiàn) “合并兩行”。

from docx import Document

# 判斷字符串是否為數(shù)字
def is_number(s):
  try:
    float(s)
    return True
  except ValueError:
    pass
  try:
    import unicodedata
    unicodedata.numeric(s)
    return True
  except (TypeError, ValueError):
    pass
  return False

# 修正錯(cuò)誤題目序號(hào)
# src,源字符串 nPos,序號(hào)結(jié)束下標(biāo) cnt,正確序號(hào)
def changeNum(src,nPos,cnt):
  s = src[:0] + src[nPos:]
  str_list = list(s)
  str_list.insert(0, str(cnt))
  dest = ‘‘.join(str_list)
  return dest
  
# 源文檔
srcdocx = Document(‘src.docx‘)
# 目標(biāo)文檔
outDocx = Document()
idx = 0 # 遍歷下標(biāo)
length = len(srcdocx.paragraphs) # 總段落數(shù)
cnt = 1 # 遍歷序號(hào)
sum = 1 # 修改總次數(shù)

while(1):
  if idx >= length:
    break
  src = srcdocx.paragraphs[idx].text
  # 實(shí)現(xiàn)需求1,3,5
  if((src == "窗體底端") or (src =="窗體頂端") or (src == "") or (is_number(src))) :
    print(f"正在修改第{sum}處錯(cuò)誤 {src}")
    sum = sum + 1 # 計(jì)算修改的次數(shù)
    idx = idx + 1
    continue
  # 實(shí)現(xiàn)需求2
  nPos1 = src.find(".")
  if nPos1 != -1 :
    # 查找到有序號(hào)的行
    dest = changeNum(src,nPos1,cnt)
    print(f"正在修改第{sum}處錯(cuò)誤 {src}")
    sum = sum + 1 # 計(jì)算修改的次數(shù)
    cnt = cnt + 1 # 序號(hào)后移
    outDocx.add_paragraph(dest) # 寫入數(shù)據(jù)到新word
  # 實(shí)現(xiàn)需求4
  nPos2 = src.find(‘、‘)
  if nPos2 != -1 :
    src2 = srcdocx.paragraphs[idx+1].text
    outDocx.add_paragraph(src+src2)
    idx = idx + 1
    print(f"正在修改第{sum}處錯(cuò)誤 {src},{src2}")
    sum = sum + 1 # 計(jì)算修改的次數(shù)
  idx = idx + 1
  
outDocx.save(‘out.docx‘)
print(f"修改完成!共計(jì){sum}個(gè)錯(cuò)誤!")

運(yùn)行效果:

最終效果

總結(jié)

Python還是一個(gè)極為強(qiáng)大的工具,并且門檻低,易入門,以后我要多多學(xué)習(xí)Python!如果我的博客能給你點(diǎn)思路,那就發(fā)揮了很大的作用了!人生苦短,我用Python~

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python常用模塊os.path之文件及路徑操作方法

    Python常用模塊os.path之文件及路徑操作方法

    os.path 模塊主要用于獲取文件的屬性。這篇文章主要介紹了Python常用模塊os.path——文件及路徑操作,需要的朋友可以參考下
    2019-12-12
  • 深入講解Python編程中的字符串

    深入講解Python編程中的字符串

    這篇文章主要介紹了Python編程中的字符串,包括字符串的格式化與三引號(hào)的使用等,需要的朋友可以參考下
    2015-10-10
  • Python中對(duì)象的引用與復(fù)制代碼示例

    Python中對(duì)象的引用與復(fù)制代碼示例

    這篇文章主要介紹了Python中對(duì)象的引用與復(fù)制代碼示例,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • python一招完美搞定Chromedriver的自動(dòng)更新問題

    python一招完美搞定Chromedriver的自動(dòng)更新問題

    這篇文章主要介紹了python一招完美搞定Chromedriver的自動(dòng)更新,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • python中解析json格式文件的方法示例

    python中解析json格式文件的方法示例

    這篇文章主要給大家介紹了python中解析json格式文件的相關(guān)資料,解析json文件就是編碼和解碼,本文還介紹了在解析中可能遇到的問題與解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • Python 如何實(shí)時(shí)向文件寫入數(shù)據(jù)(附代碼)

    Python 如何實(shí)時(shí)向文件寫入數(shù)據(jù)(附代碼)

    這篇文章主要介紹了Python 如何實(shí)時(shí)向文件寫入數(shù)據(jù)(附代碼),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python處理PHP數(shù)組文本文件實(shí)例

    python處理PHP數(shù)組文本文件實(shí)例

    這篇文章主要介紹了python處理PHP數(shù)組文本文件實(shí)例,本文的PHP數(shù)組文本是多個(gè)redis數(shù)據(jù)庫的配置文件,需求是提取相關(guān)參數(shù)組合成Shell命令,需要的朋友可以參考下
    2014-09-09
  • python中的break、continue、exit()、pass全面解析

    python中的break、continue、exit()、pass全面解析

    下面小編就為大家?guī)硪黄猵ython中的break、continue、exit()、pass全面解析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Python報(bào)錯(cuò)no?module?named?torch的幾種原因及解決方案

    Python報(bào)錯(cuò)no?module?named?torch的幾種原因及解決方案

    這篇文章主要給大家介紹了關(guān)于Python報(bào)錯(cuò)no?module?named?torch的幾種原因及解決方案,這是小白時(shí)常犯的錯(cuò),這個(gè)報(bào)錯(cuò)一般說明在你電腦當(dāng)前環(huán)境下沒有安裝torch這個(gè)模塊,但也有其他情況,需要的朋友可以參考下
    2023-10-10
  • Python常見內(nèi)置高階函數(shù)即高階函數(shù)用法

    Python常見內(nèi)置高階函數(shù)即高階函數(shù)用法

    這篇文章主要介紹了Python的三種高階函數(shù)map、filter、reduce,高階函數(shù)就是一個(gè)函數(shù)可以作為參數(shù)傳給另外一個(gè)函數(shù),或者一個(gè)函數(shù)的返回值為另外一個(gè)函數(shù)(若返回值為該函數(shù)本身,則為遞歸),滿足其一則為高階函數(shù),具體內(nèi)容,需要的朋友可以參考下面文章的介紹
    2021-12-12

最新評(píng)論