<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          盤點一個Python自動化辦公的實戰(zhàn)案例

          共 3357字,需瀏覽 7分鐘

           ·

          2022-10-21 11:34

          點擊上方“Python共享之家”,進(jìn)行關(guān)注

          回復(fù)“資源”即可獲贈Python學(xué)習(xí)資料

          嶺猿同旦暮,江柳共風(fēng)煙。

          大家好,我是皮皮。    

          一、前言

          前幾天在Python鉆石交流群【Hxy任我肥】問了一個Python自動化辦公的問題,提問截圖如下:

          想要的效果是下圖這樣的:

          準(zhǔn)確來說,這個都不算是問題了,而是一個實實在在的需求。

          二、實現(xiàn)過程

          這里【Jason】給了一個可行的思路,如下:

          后來【瑜亮老師】給了一個具體的代碼,如下所示:

          import re
          from docx import Document
          import pandas as pd

          document = Document("判斷(括號處理)(1).docx")
          all_paragraphs = document.paragraphs
          data = [paragraph.text for paragraph in all_paragraphs if '√' in paragraph.text or '×' in paragraph.text]
          data = ''.join(data)
          res = re.findall('[√×]', data, re.S)
          res = [f'{k + 1}.{v}' for k, v in enumerate(res)]
          df = pd.DataFrame(res)
          df.to_excel('test9-13.xlsx', index=False, header=None)

          真的太強(qiáng)了!

          代碼運行之后可以得到預(yù)期的結(jié)果,如下圖所示:

          后來【狂吃山楂片】基于此代碼,來了個簡易版的,代碼如下所示:

          import re
          from docx import Document
          import pandas as pd

          document = Document(r"判斷(括號處理)(1).docx")
          text = document.part.blob.decode('utf-8')

          text = re.sub(r'<.*?>''', text)
          text = re.sub(r'\.\s+', r'.', text)
          df = pd.DataFrame(re.findall(r'\d+\.[√×]', text))
          df.to_excel('result.xlsx', header=None, index=False)

          這技術(shù)真是到家了,出神入化的。

          代碼運行之后,也完全可以實現(xiàn)這個需求。

          后來【瑜亮老師】還給了一個代碼,也非常贊,如下所示:

          data = [paragraph.text for paragraph in all_paragraphs if '√' in paragraph.text or '×' in paragraph.text]
          # 合并為一個長字符串,然后替換刪除所有的空格
          data = ''.join(data).replace(' ''')
          # 使用re正則表達(dá)式提取出所有含有題號的答案
          res = re.findall(r'\d+\.[√×]', data, re.S)
          df = pd.DataFrame(res)
          df.to_excel('test9-13.xlsx', index=False, header=None)

          真讓人嘆為觀止!把多余的空格都替換刪除,可以防止答案中含有空格而導(dǎo)致不能被正則r'\d+\.[√×]'匹配到,這樣就一步到位了。不用再用列表推導(dǎo)式構(gòu)造答案。

          你以為這就完事了?

          后來【甯同學(xué)】使用openpyxl庫也搞定了,代碼如下圖所示:

          import re 
          import docx
          import openpyxl
          def str_work(string:str):
              return [*filter(None,re.split('\.',re.sub('\d+','',string.replace(' ''').replace('\n'''))))]
          wb = openpyxl.Workbook()
          ws = wb.active
          ws.append(['題目','答案'])
          doc = docx.Document(r'C:\Users\Administrator\Desktop\判斷(括號處理).docx')
          doc_text = '\n'.join(( i.text for i in doc.paragraphs[3:]))
          doc_list = doc_text.split('\n一、判斷題')
          title_row = [i.strip() for i in doc_list[0].split('\n'if i.strip().split('、')!=['']]
          answer_row = [i for i in str_work(doc_list[1])]
          for i in zip(title_row,answer_row):
              ws.append(list(i))
          wb.save('1.xlsx')

          運行之后得到的結(jié)果如下圖所示:

          三、總結(jié)

          大家好,我是皮皮。這篇文章主要盤點了一個Python自動化辦公的問題,文中針對該問題,給出了具體的解析和代碼實現(xiàn),幫助粉絲順利解決了問題。

          最后感謝粉絲【Hxy任我肥】提問,感謝【Jason】、【瑜亮老師】、【狂吃山楂片】、【甯同學(xué)】給出的思路和代碼解析,感謝【dcpeng】、【產(chǎn)后修復(fù)】、【此類生物】、【余克富】等人參與學(xué)習(xí)交流。

          大家在學(xué)習(xí)過程中如果有遇到問題,歡迎隨時聯(lián)系我解決(我的微信:pdcfighting),應(yīng)粉絲要求,我創(chuàng)建了一些高質(zhì)量的Python付費學(xué)習(xí)交流群,歡迎大家加入我的Python學(xué)習(xí)交流群!

          有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請在后臺回復(fù)【

          萬水千山總是情,點個【在看】行不行

          瀏覽 41
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91亚洲国产成人久久精品网 | 欧美一级内射美妇网站 | 超碰操 | 亚洲国产视频一区 | 大香蕉在线成人 |