乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      一周的工作1天干完/python+Delphi自動(dòng)化記錄

       新用戶(hù)5228KeDY 2021-10-10

      剛剛結(jié)束的一個(gè)事情,僅限于完成了任務(wù)。

      一、任務(wù)描述

      有一個(gè)超巨型的資料性的文件,是網(wǎng)頁(yè)上查詢(xún)之后的結(jié)果,有幾百頁(yè)、幾百筆資料,需要把里面的資料一條一條的列在一個(gè)單獨(dú)立的文件里面,并且,文件用“組序號(hào)-標(biāo)識(shí)-名稱(chēng).pdf”來(lái)命名。

      組序號(hào)由另一份Excel文件給出,每組之中有標(biāo)識(shí)和名稱(chēng)域與超巨pdf中的相應(yīng)域?qū)?yīng)。

      難點(diǎn):

      1、不能手工操作。不易一一對(duì)應(yīng),且不產(chǎn)生馬虎和疏忽的錯(cuò)誤。

      2、沒(méi)有長(zhǎng)期時(shí)間。大致實(shí)測(cè),一筆資料從信息提取、標(biāo)識(shí)對(duì)應(yīng)、生成新文件、按規(guī)則命名大約3分鐘左右時(shí)間,1000筆資料大約50小時(shí),每天8小時(shí)不動(dòng),大約6天,一周。一周下來(lái),估計(jì)人也就廢了。我相信這事兒沒(méi)有兩周干不下來(lái)。

      3、不易協(xié)同作業(yè)。Excel文件規(guī)格不盡相同,且超巨pdf不便擴(kuò)散,所以最好是一下子over。

      二、任務(wù)分解

      1、根據(jù)標(biāo)識(shí)號(hào)拆分超巨pdf。這一步可以在python里用PyPDF2包完成。

      2、規(guī)范Excel格式和內(nèi)容。這一步在Excel里面用排序、函數(shù)和VBA足夠,之后導(dǎo)出為csv,便于最終Delphi處理它們。

      3、根據(jù)標(biāo)識(shí)和名稱(chēng)對(duì)應(yīng)并拼接資料,按標(biāo)識(shí)生成單個(gè)pdf文件。由于所有資料都沒(méi)有放置在數(shù)據(jù)庫(kù)里,因此統(tǒng)一按字段當(dāng)成格式文本來(lái)搜索是否有匹配。無(wú)匹配時(shí),再巡回一次,避免標(biāo)識(shí)不在指定的位置上。

      三、功能片斷

      1、拆分超巨pdf。

      部分代碼:

      '''

      分拆一個(gè)多頁(yè)大pdf文件為指定頁(yè)數(shù)的小pdf子文件

      以下代碼在py3Anaconda 4.3.30、pypdf2-1.26.0

      生成的子文件保存在本腳本文件所在的目錄下

      '''

      from PyPDF2 import PdfFileReader, PdfFileWriter

      def pdf_splitter(path,start,end):

          pdf = PdfFileReader(path)

          pdf_writer =PdfFileWriter()

          output_filename ='page_{}.pdf'.format(end+300)

          for page inrange(start,end):      

             pdf_writer.addPage(pdf.getPage(page))

              print(page)

          withopen(output_filename,'wb') as out:

              pdf_writer.write(out)

             print('Created:{}'.format(output_filename))

      path = 'F:/a/301368.pdf'

      pageNum=68#文件的尾頁(yè)頁(yè)數(shù)

      for i in range(pageNum):

          pdf_splitter(path,i,i+1)

      2、pdf能否正常被搜索。若能,pyPDF2可通過(guò)PdfFileReader正常導(dǎo)出文本,否則可以OCR,或者pdf轉(zhuǎn)word,再?gòu)?/span>word轉(zhuǎn)到txt,進(jìn)入Delphi查詢(xún)。

      from PyPDF2 import PdfFileReader

      filename = 'F:/a/PT/page_2.pdf'

      pdf = PdfFileReader(open(filename, "rb"))

      pageNum=pdf.getNumPages()

      text=''

      for i in range(0, pageNum):

         text+=pdf.getPage(i).extractText()

      print(text)

      3、Excel重復(fù)行、重復(fù)列的判斷。排序,上或下錯(cuò)開(kāi)1行,或錯(cuò)開(kāi)1列,if。略。

      4、Delphi拼接每筆資料,并生成pdf文件。

      python生成pdf文件,留出來(lái)標(biāo)識(shí),Delphi通過(guò)標(biāo)識(shí),讀取csv,重命名文件。

      uses FileCtrl;

      procedure TForm1.Button1Click(Sender: TObject);

      var

        txtFile: TextFile;

        s: string;

      begin

        AssignFile(txtFile, 'F:\a\XLS_idname.txt');

        Reset(txtFile);

        while not eof(txtFile) do

        begin

          readln(txtFile, s); //讀取一行保存到字符串s

          //if pos('標(biāo)識(shí)號(hào)',s)<>0then

          Memo1.Lines.Add(s); //Memo1中顯示

        end;

      end;

      procedure TForm1.Button2Click(Sender: TObject);

      begin

        FileListBox1.Directory :='F:\a\b';

      end;

      procedure TForm1.Button3Click(Sender: TObject);

      var

        myf, Newf: string;

        i, j: integer;

      begin

        //重命名開(kāi)始

        for i := 0 toFileListBox1.Items.Count - 1 do

        begin

          myf :=FileListBox1.Items[i];

          //找組名和名稱(chēng)

          for j := 0 tomemo1.Lines.Count - 1 do

          begin

            if pos(LeftStr(myf, 8),memo1.Lines[j]) <> 0 then

              break;

          end;

          Newf :=StringReplace(memo1.Lines[j], ',', '-', [rfReplaceAll]);

          ReNameFile('F:\a\b\' +myf, 'F:\a\c\' + Newf + '.pdf');

          sleep(50);//給點(diǎn)兒寫(xiě)磁盤(pán)時(shí)間

        end;

        showmessage('OK!');

      end;

      四、幾點(diǎn)討論

      1、非圖片版的pdf就一定能提取其中的文本嗎?感覺(jué)是不一定!盡管中英文各種網(wǎng)絡(luò)中介紹各種方法處理pdf的文字提取問(wèn)題,但是,確實(shí)是碰到了提取不了的情況。提取出來(lái)的文字,不是特殊編碼,也并非全是亂碼,查詢(xún)N久,沒(méi)解決,挺困惑。

      2、不是一定圖片版的pdf才需要OCR,這個(gè)不用解釋了。

      3、為什么不用python一擼到底?在python語(yǔ)言大行其道的今天,python幾乎無(wú)所不能了,但還存在一個(gè)熟悉程度的問(wèn)題。Delphi太熟悉了,同等工作量,當(dāng)然熟悉的工具最快了。而且,python寫(xiě)GUI在一個(gè)老Delphier面前,弱爆了。

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多