溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在Python中使用docx模塊

發(fā)布時(shí)間:2021-03-18 16:37:46 來源:億速云 閱讀:292 作者:Leah 欄目:開發(fā)技術(shù)

怎么在Python中使用docx模塊?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

首先批量將doc轉(zhuǎn)化為Python能夠打開并讀寫的docx文檔:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# File : 批量將doc轉(zhuǎn)換為docx.py
# Author: roohom
# Date : 2018/9/17 0017
 
 
'''
使用Word批量將doc轉(zhuǎn)化為docx
  - 調(diào)用win32com,打開Word應(yīng)用程序
  - 打開doc
  - 保存成docx
  - 關(guān)閉word
  - 轉(zhuǎn)入下一個(gè)doc并重復(fù)上述操作
'''
 
from win32com import client as wc
 
def doSaveAas():
  word = wc.Dispatch('Word.Application')
  #延時(shí)5秒鐘,防止由于系統(tǒng)配置原因還沒打開Word就進(jìn)行下一步程序
  #time.sleep(5)
  doc = word.Documents.Open(r'{0}'.format(word_name)) # 目標(biāo)路徑下的文件
  doc.SaveAs(r'{0}'.format(word_docx_name), 16) # 轉(zhuǎn)化后路徑下的文件,16表示docx格式
  doc.Close()
  word.Quit()
 
if __name__ == '__main__':
  k = 1
  i = 3
  j = 3
  while True:
    word_name = "D:\學(xué)習(xí)區(qū)\Python\python二級(jí)考試試題\選擇題\python二級(jí)考試試題{0}.doc".format(i)
    word_docx_name = "D:\學(xué)習(xí)區(qū)\Python\python二級(jí)考試試題\選擇題\python二級(jí)考試試題{0}".format(j)
    doSaveAas()
    i += 1
    j += 1
    print("已完成{0}個(gè)word從doc到docx的轉(zhuǎn)換".format(k))
    k += 1

結(jié)果是這個(gè)樣子的:

怎么在Python中使用docx模塊

再進(jìn)行我們的正題,開始刷題:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# File : MyDemo.py
# Author: roohom
# Date : 2018/9/17 0017
 
 
'''
刷題腳本
  - python對(duì)文件讀寫等操作的強(qiáng)大功能
    - 使用docx模塊對(duì)docx文檔進(jìn)行讀寫
      - python不支持直接打開并讀取word文檔,因此需要使用方法將doc轉(zhuǎn)化為docx,方法詳見doc_to_docx.py
  - 原理
    - 打開經(jīng)轉(zhuǎn)化后的docx文檔,并逐行讀文件內(nèi)容
    - 判斷是否讀到“正確內(nèi)容”語句
      - 是,設(shè)置用戶輸入,提示輸入用戶的答案
      - 否,繼續(xù)讀操作
    - 比較用戶的答案與正確答案是否一樣
      - 是,輸出正確提示
      - 否,輸出錯(cuò)誤提示
    - 繼續(xù)下一題,重復(fù)上述操作
  - 拓展延伸
     - 可以在程序主入口處設(shè)置用戶輸入,輸入用戶想要打開的路徑、文件,程序根據(jù)文件名、路徑等進(jìn)行上述操作
     - 可以根據(jù)用戶輸入情況設(shè)置加分減分,并根據(jù)全部答案情況,分析錯(cuò)誤題目,后續(xù)將錯(cuò)題重修整理收集,反饋給用戶
'''
 
import docx
'''
字符串比較的一種麻煩方法:
def comparison(a, b):
  ib=0
  for ia in range(len(a)):
    if ord(a[ia:ia+1])-ord(b[ib:ib+1])==0:
      ib=ib+1
      if ib==len(b):
        print('你的答案正確!')
    else:
      print('你的答案錯(cuò)誤!')
      break
'''
 
def comparison(a, b):
  if a == b :
    print("你的答案正確!")
  else:
    print("你的答案錯(cuò)誤!")
 
if __name__ == '__main__':
  file = docx.Document(r"D:\學(xué)習(xí)區(qū)\Python\python二級(jí)考試試題\選擇題\python二級(jí)考試試題01.docx")
  print("==================全國計(jì)算機(jī)二級(jí)考試之Python刷題==================")
 
  for p in file.paragraphs:
    m = p.text
    if "正確答案: " in m:
      ans = input("請輸入你的答案:")
      a = "正確答案: {0} ".format(ans)
      print(a)
      b = m
      print(b)
      comparison(a, b)
      print()
      print("==================全國計(jì)算機(jī)二級(jí)考試之Python刷題==================")
    else:
      print(m)

結(jié)果是這個(gè)樣子的:

怎么在Python中使用docx模塊

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI