最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

介紹

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

分析需求

對文檔中的內(nèi)容進行分析,只留下題目,選項,并且題號要從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)

輸出效果:

分析所需要刪除的內(nèi)容:

需求1:

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

刪除多余數(shù)字行

需求2:

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

需求3:

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

需求4:

A、
阿卡波糖
選項合成一行

需求5:

刪除多余空白行

編寫代碼

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

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

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

需求4的實現(xiàn)類似需求2,只需要找到 “、” 符號就行,然后進行類似操作,就能實現(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

# 修正錯誤題目序號
# src,源字符串 nPos,序號結(jié)束下標 cnt,正確序號
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‘)
# 目標文檔
outDocx = Document()
idx = 0 # 遍歷下標
length = len(srcdocx.paragraphs) # 總段落數(shù)
cnt = 1 # 遍歷序號
sum = 1 # 修改總次數(shù)

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

運行效果:

最終效果

總結(jié)

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

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

相關(guān)文章

  • python如何修改圖像的分辨率

    python如何修改圖像的分辨率

    這篇文章主要介紹了python如何修改圖像的分辨率問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python NumPy 數(shù)組索引的示例詳解

    Python NumPy 數(shù)組索引的示例詳解

    數(shù)組索引是指使用方括號([])來索引數(shù)組值,numpy提供了比常規(guī)的python序列更多的索引工具,除了按整數(shù)和切片索引之外,數(shù)組可以由整數(shù)數(shù)組索引、布爾索引及花式索引,這篇文章主要介紹了Python NumPy 數(shù)組索引,需要的朋友可以參考下
    2023-01-01
  • pandas刪除某行或某列數(shù)據(jù)的實現(xiàn)示例

    pandas刪除某行或某列數(shù)據(jù)的實現(xiàn)示例

    本文主要介紹了pandas刪除某行或某列數(shù)據(jù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Python中random模塊用法實例分析

    Python中random模塊用法實例分析

    這篇文章主要介紹了Python中random模塊用法,實例分析了Python中random模塊的使用技巧及字符串操作相關(guān)方法,需要的朋友可以參考下
    2015-05-05
  • python占位符輸入方式實例

    python占位符輸入方式實例

    在本篇文章中小編給大家分享了關(guān)于python占位符怎么輸入的相關(guān)知識點內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2019-05-05
  • Python3如何在服務(wù)器打印資產(chǎn)信息

    Python3如何在服務(wù)器打印資產(chǎn)信息

    這篇文章主要介紹了Python3如何在服務(wù)器打印資產(chǎn)信息,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 使用Python發(fā)送郵件附件以定時備份MySQL的教程

    使用Python發(fā)送郵件附件以定時備份MySQL的教程

    這篇文章主要介紹了使用Python發(fā)送郵件附件以定時備份MySQL的教程,本文的示例基于CentOS,需要的朋友可以參考下
    2015-04-04
  • Python排序函數(shù)的使用方法詳解

    Python排序函數(shù)的使用方法詳解

    這篇文章主要給大家介紹了關(guān)于Python排序函數(shù)使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python批量更改文件名的實現(xiàn)方法

    Python批量更改文件名的實現(xiàn)方法

    這篇文章主要介紹了Python批量更改文件名的實現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握這樣的方法,需要的朋友可以參考下
    2017-10-10
  • 基于Python編寫一個單詞自測程序

    基于Python編寫一個單詞自測程序

    這篇文章主要為大家詳細介紹了如何基于Python編寫一個單詞自測程序,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12

最新評論

海原县| 萍乡市| 正镶白旗| 五寨县| 故城县| 韶关市| 林甸县| 瑞丽市| 图木舒克市| 尚志市| 贡觉县| 沅陵县| 古浪县| 祁东县| 蓝田县| 新河县| 大同市| 长乐市| 大埔区| 安徽省| 雅江县| 凤山市| 若羌县| 祥云县| 沁源县| 香港 | 湖南省| 静海县| 吐鲁番市| 宣城市| 福清市| 巴青县| 容城县| 丰镇市| 英超| 昌图县| 奉贤区| 张家港市| 泗洪县| 丰宁| 布拖县|