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

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

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

介紹

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

分析需求

對文檔中的內(nèi)容進(jìn)行分析,只留下題目,選項(xiàng),并且題號要從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.對餐后血糖顯著升高的2型糖尿病者,可選用下列哪種藥物(5.0分)

刪除多余數(shù)字行

需求2:

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

需求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)了“間接刪除”。

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

需求4的實(shí)現(xiàn)類似需求2,只需要找到 “、” 符號就行,然后進(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ò)誤題目序號
# src,源字符串 nPos,序號結(jié)束下標(biāo) 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‘)
# 目標(biāo)文檔
outDocx = Document()
idx = 0 # 遍歷下標(biāo)
length = len(srcdocx.paragraphs) # 總段落數(shù)
cnt = 1 # 遍歷序號
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 :
    # 查找到有序號的行
    dest = changeNum(src,nPos1,cnt)
    print(f"正在修改第{sum}處錯(cuò)誤 {src}")
    sum = sum + 1 # 計(jì)算修改的次數(shù)
    cnt = cnt + 1 # 序號后移
    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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

    python如何修改圖像的分辨率

    這篇文章主要介紹了python如何修改圖像的分辨率問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    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ù)的實(shí)現(xiàn)示例

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

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

    Python中random模塊用法實(shí)例分析

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

    python占位符輸入方式實(shí)例

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

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

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

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

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

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

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

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

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

    基于Python編寫一個(gè)單詞自測程序

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

最新評論

汝阳县| 都匀市| 麻阳| 泰来县| 乐都县| 长垣县| 诸暨市| 镇坪县| 沅江市| 昔阳县| 乐业县| 蒙城县| 贡嘎县| 泗洪县| 东兰县| 临夏县| 如皋市| 聊城市| 河源市| 遵义县| 黎川县| 泰和县| 桂平市| 蕉岭县| 乐昌市| 类乌齐县| 黄浦区| 房山区| 金华市| 外汇| 汉寿县| 鄂尔多斯市| 日喀则市| 新邵县| 常州市| 台南县| 龙川县| 红桥区| 托克逊县| 防城港市| 大安市|