Ich habe einen Prozess in Python erstellt, der Text unter Verwendung von Präfixübereinstimmung, Suffixübereinstimmung, Teilübereinstimmung und exakter Übereinstimmung unter Verwendung mehrerer Bedingungen extrahiert. Ursprünglich habe ich mit Python einen Prozess erstellt, um etwas zu extrahieren und zu entfernen, das einen bestimmten Wortlaut aus einem bestimmten Text enthält, aber ich dachte, dass der Prozess zum Extrahieren allein effektiv wäre, und habe ihn neu erstellt, damit ich diesen Teil teilweise ändern kann. Ich versuchte es.
Dieses Mal gibt es auch eine Exe. Wenn Sie sie also nur ausführen möchten, benötigen Sie kein Python.
Der folgende Vorgang erstellt Bedingungen für die Suche.
. *
Wird gemäß den Bedingungen wie Präfixübereinstimmung und Suffixübereinstimmung hinzugefügt, und die Bedingungen werden durch |
verbunden. def createReg(self):
searchItems=pd.read_excel('resources/Daten suchen.xlsx')
sortTypeCode=iniFile.get('info','sortType')
searchItemArray=np.asarray(searchItems['Suchbegriff'])
sortType=SORT_ENUM(sortTypeCode)
if sortType==SORT_ENUM.SORT_LENGTH_ASC or sortType==SORT_ENUM.SORT_LENGTH_DESC:
searchItemIndex=[]
for item in searchItemArray:
searchItemIndex.append(len(item))
searchSeries=pd.Series(searchItemIndex)
serchItemDataFrame=pd.concat([searchItems['Suchbegriff'],searchSeries],axis=1)
if sortType==SORT_ENUM.SORT_LENGTH_ASC:
sortItems=serchItemDataFrame.sort_values(0,ascending=True)
else:
sortItems=serchItemDataFrame.sort_values(0,ascending=False)
searchItemArray=np.asarray(sortItems['Suchbegriff'])
regTypeCode=iniFile.get('info','regType')
regType=REG_ENUM(regTypeCode)
regStr=''
for item in searchItemArray:
if regStr!='':
regStr=regStr+'|'
sItem=item
if REG_ENUM.REG_TYPE_CONTAIN==regType:
sItem='.*'+item+'.*'
elif REG_ENUM.REG_TYPE_FRONT==regType:
sItem=item+'.*'
elif REG_ENUM.REG_TYPE_BACKWARD==regType:
sItem='*.'+item
elif REG_ENUM.REG_TYPE_EXACT_MATCH==regType:
sItem=item
regStr=regStr+sItem
return re.compile(regStr)
Der folgende Prozess wird verwendet, um basierend auf den im obigen Prozess erstellten Bedingungen zu extrahieren.
with open
, um die Datei zu lesen und zu prüfen, ob sie zeilenweise übereinstimmt. def extract(self):
reg=self.createReg()
paths=glob.glob('data/*.csv')
fileDict={}
for pathName in paths:
extractList=[]
with open(pathName,encoding=iniFile.get('info','encoding')) as f:
# targetStrs=f.read()
for targetStr in f:
extractStr=reg.search(targetStr)
if extractStr:
extractList.append(targetStr)
fileDict[os.path.basename(pathName)]=extractList
outputPath=iniFile.get('info','outputPath')
for key,data in fileDict.items():
outputFile=outputPath+'extract_'+key+'.txt'
with open(outputFile,encoding='utf-8',mode='w') as f:
for d in data:
f.write(d)
resources / search data.xlsx
festregExtract.exe
aus.