Heim  >  Artikel  >  Backend-Entwicklung  >  So organisieren Sie Anhänge mit Python

So organisieren Sie Anhänge mit Python

不言
不言Original
2018-06-04 17:42:501398Durchsuche

In diesem Artikel wurden relevante Wissenspunkte zur Verwendung von Python zum Organisieren von Anhängen zusammengestellt. Freunde, die Python lernen, können mitmachen und es testen.

Derzeit befinden sich mehr als 500 Lebensläufe in meinem Ordner. Wenn ich Informationen wie Schule, akademische Qualifikationen usw. wissen möchte, muss ich jedes Wort öffnen, um es anzuzeigen, was zu zeitaufwändig ist. verbrauchend. Zu diesem Zeitpunkt muss Python Maßnahmen ergreifen.

Ziel

Es gibt derzeit mehr als 600 Wörter, die denen im Screenshot ähneln. Ich möchte sie einfach organisieren:

Sie können eine Excel-Datei für die Navigation organisieren (ähnlich einem Verzeichnis) und Sie können Excel verwenden, um schnell die gewünschten Anhänge zu finden, wie unten gezeigt:

Spezifische Umsetzung

Lassen Sie uns im Detail darüber sprechen, wie wir es erreichen können. Die Anordnung der Ideen ist relativ einfach Durchsuchen Sie alle Word-Dateien, erhalten Sie die wichtigsten Informationen in Word und speichern Sie sie in Excel.

Hier sind die wichtigsten verwendeten Module:

import xlsxwriter
import subprocess
import os
import docx
import sys
import re

XLSXWriter wird hauptsächlich zum Betrieb von Excel verwendet, XLSXWriter kann nur zum Schreiben verwendet werden Die Effizienz ist höher als bei xlwt und die Datenmenge ist nicht groß. Die Verwendung von xlwt ist in Ordnung.

Der Unterprozess wird hauptsächlich zum Aufrufen der Befehlszeile verwendet. Da das docx-Modul die doc-Word-Datei nicht analysieren kann, konvertiert es die doc-Datei vor dem Parsen in eine docx-Datei.

OS wird hauptsächlich zum Durchsuchen von Ordnern verwendet, um Dateien abzurufen.

docx wird hauptsächlich zum Parsen von Word-Dokumenten verwendet.

Standardisieren Sie den Dateinamen

Zuerst standardisieren wir den Dateinamen, da bei der Verwendung von subprocess.call zum Aufrufen von Befehlen Leerzeichen, Sonderzeichen usw. vorhanden sind Es gibt keinen Ausweg und es wird ein Fehler gemeldet. Daher können wir dieses potenzielle Problem auch vorher beheben.

def remove_doc_special_tag():
  for filename in os.listdir(path):
    otherName = re.sub("[\s+\!\/_,$%^*(+\"\')]+|[+——()?【】“”!,。?、~@#¥%……&*()]+", "",filename) 
    os.rename(os.path.join(path,filename),os.path.join(path,otherName))

Dateien durchqueren

Danach können wir uns an die Arbeit machen und jede Datei zum Parsen durchqueren :

path='/Users/cavin/Desktop/files'
for filename in os.listdir(path):
  ...具体逻辑...

Hier ist ein Problem aufgetreten. Erstens kann das DocX-Modul das Doc-Word-Dokument nicht analysieren. Da ich einen Mac verwende, kann ich Win32com nicht verwenden Dieses Problem war ziemlich peinlich. Später entdeckte Google, dass doc über Befehle in docx konvertiert werden konnte.

Beachten Sie hier, dass der konvertierte docx-Dateistil verloren geht, dies hat jedoch keinen Einfluss auf meine Fähigkeit, Textinformationen zu erhalten.

Es gibt also diesen Code. Wenn es sich um eine Doc-Datei handelt, wird sie zuerst in docx konvertiert und dann entfernt, nachdem sie analysiert wurde.

if filename.endswith('.doc'):
  subprocess.call('textutil -convert docx {0}'.format(fullname),shell=True)
  fullname=fullname[:-4]+".docx"
  sheetModel= etl_word_files(fullname)#解析文本逻辑
  subprocess.call('rm {0}'.format(fullname),shell=True) #移除转换的文件

Parsen Sie die Word-Datei

Der nächste Schritt besteht darin, die Datei zu parsen, was einfach ist Um dies über das docx-Modul zu erreichen, werde ich die spezifische Analyselogik nicht veröffentlichen, sondern nur jede Zeile durchlaufen und Daten basierend auf einigen Schlüsselwörtern und Symbolen abfangen (das Format jedes Lebenslaufs ist im Grunde das gleiche)

doc = docx.Document(fullname)
for para in doc.paragraphs:
  print(para.text)
  ...具体解析逻辑...

Excel ausfüllen

Die analysierten Daten können direkt in Excel ausgefüllt werden:

workbook = xlsxwriter.Workbook('report_list.xlsx')
worksheet = workbook.add_worksheet('list')
worksheet.write(0,0, '序号') 
worksheet.write(0,1, '姓名') 
worksheet.write(0,2, '性别') 
worksheet.write(0,3, '年龄') 
worksheet.write(0,4, '籍贯') 
worksheet.write(0,5, '目前所在地') 
worksheet.write(0,6, '学历')
worksheet.write(0,7, '学校')
worksheet.write(0,8, '公司')
worksheet.write(0,9, '职位')
worksheet.write(0,10, '文档链接')

Das Hauptthema hier ist das Ausfüllen des Dokumentlinks. Da es für andere Personen ist, stellen Sie einfach sicher, dass sich der Anhang und das Excel im selben Ordner befinden, und verwenden Sie einen relativen Pfad, um dies zu erreichen Verwenden Sie die Excel-Funktion HYPERLINK:

worksheet.write(index,10, '=HYPERLINK(\"./'+filename+'\",\"附件\")')

Problempunkt

An dieser Stelle kann die entsprechende Funktion Grundsätzlich kann es implementiert werden, aber es ist nicht perfekt, hauptsächlich in Word. Das Format ist nicht Standard und es gibt keine gute Möglichkeit, die gewünschten Daten genau zu erhalten, aber die meisten großen Namen, Schulen usw. wurden erfasst kann als eine leichtere Aufgabe angesehen werden.

Zusammenfassung

Die Verwendung von Python reduziert immer noch ein gewisses Maß an sich wiederholender Arbeit, aber es scheint keine gute Möglichkeit zu geben, mit einigen nicht standardmäßigen Dingen umzugehen.

Obwohl Logik hinzugefügt werden kann, um diesen Nichtstandards Rechnung zu tragen, ist es offensichtlich, dass Aufwand und Leistung nicht proportional sind.

Es ist richtig, die verfügbaren Tools gut zu nutzen, um die Effizienz zu verbessern. Ob es sich um eine dumme Duplizierung der Arbeit handelt oder ob Code zur Reduzierung der Duplizierung verwendet werden soll, hängt davon ab, wie Sie vorgehen Schau es dir an.

Verwandte Empfehlungen;

Verwenden Sie Python, um schnell HTTP-Dienste und Dateifreigabedienste zu erstellen

Verwenden Sie Python, um Dateiinhalte zu überwachen ändert den Code

Das obige ist der detaillierte Inhalt vonSo organisieren Sie Anhänge mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn