十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
Python中怎么利用docx模塊實現(xiàn)一個刷題功能,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
創(chuàng)新互聯(lián)是專業(yè)的犍為網(wǎng)站建設(shè)公司,犍為接單;提供網(wǎng)站設(shè)計制作、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行犍為網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
word文檔是這樣的:
觀察word內(nèi)容,每道題目的題目內(nèi)容和題目答案都是一樣的格式,包括縮進、字體等等,那么就可以使用Python對文件的讀操作,瀏覽文檔的內(nèi)容,在適當?shù)膬?nèi)容區(qū)域設(shè)置輸入,將輸入與答案進行判斷是否相等,即可實現(xiàn)簡單的刷題功能。
Python默認不支持直接打開doc文件并讀寫,但是可以打開docx文件,但是docx文件必須是經(jīng)過Word程序制作或轉(zhuǎn)換而來的。如果文件太多,一個一個手動轉(zhuǎn)化太麻煩,就要使用程序?qū)ξ募哭D(zhuǎn)化,使用win32com模塊可以使用此功能。
話不多說,放碼!(部分思路在代碼中注釋):
首先批量將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)入下一個doc并重復上述操作'''from win32com import client as wcdef doSaveAas(): word = wc.Dispatch('Word.Application') #延時5秒鐘,防止由于系統(tǒng)配置原因還沒打開Word就進行下一步程序 #time.sleep(5) doc = word.Documents.Open(r'{0}'.format(word_name)) # 目標路徑下的文件 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:\學習區(qū)\Python\python二級考試試題\選擇題\python二級考試試題{0}.doc".format(i) word_docx_name = "D:\學習區(qū)\Python\python二級考試試題\選擇題\python二級考試試題{0}".format(j) doSaveAas() i += 1 j += 1 print("已完成{0}個word從doc到docx的轉(zhuǎn)換".format(k)) k += 1
結(jié)果是這個樣子的:
再進行我們的正題,開始刷題:
#!/usr/bin/env python# -*- coding: utf-8 -*-# File : MyDemo.py# Author: roohom# Date : 2018/9/17 0017'''刷題腳本 - python對文件讀寫等操作的強大功能 - 使用docx模塊對docx文檔進行讀寫 - python不支持直接打開并讀取word文檔,因此需要使用方法將doc轉(zhuǎn)化為docx,方法詳見doc_to_docx.py - 原理 - 打開經(jīng)轉(zhuǎn)化后的docx文檔,并逐行讀文件內(nèi)容 - 判斷是否讀到“正確內(nèi)容”語句 - 是,設(shè)置用戶輸入,提示輸入用戶的答案 - 否,繼續(xù)讀操作 - 比較用戶的答案與正確答案是否一樣 - 是,輸出正確提示 - 否,輸出錯誤提示 - 繼續(xù)下一題,重復上述操作 - 拓展延伸 - 可以在程序主入口處設(shè)置用戶輸入,輸入用戶想要打開的路徑、文件,程序根據(jù)文件名、路徑等進行上述操作 - 可以根據(jù)用戶輸入情況設(shè)置加分減分,并根據(jù)全部答案情況,分析錯誤題目,后續(xù)將錯題重修整理收集,反饋給用戶'''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('你的答案錯誤!') break'''def comparison(a, b): if a == b : print("你的答案正確!") else: print("你的答案錯誤!")if __name__ == '__main__': file = docx.Document(r"D:\學習區(qū)\Python\python二級考試試題\選擇題\python二級考試試題01.docx") print("==================全國計算機二級考試之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("==================全國計算機二級考試之Python刷題==================") else: print(m)
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。