J'ai créé un processus en python qui extrait le texte en utilisant l'une des correspondances de préfixe, de suffixe, de correspondance partielle et de correspondance exacte en utilisant plusieurs conditions. À l'origine, j'ai créé un processus en python pour extraire et supprimer quelque chose qui contient un libellé spécifique d'un certain texte, mais j'ai pensé que le processus d'extraction seul serait efficace et je l'ai recréé afin de pouvoir modifier partiellement cette partie. Je l'ai essayé.
Cette fois, il y a aussi un exe, donc si vous voulez juste l'exécuter, vous n'avez pas besoin de python.
resources / search data.xlsx
, l'extraction est effectuée dans les conditions de correspondance de préfixe, de correspondance de suffixe, de correspondance partielle et de correspondance exacte selon la définition définie dans resources / appConfig.ini
. ..data
.Le processus suivant crée des conditions de recherche.
. *
Est ajouté selon les conditions telles que la correspondance de préfixe et la correspondance de suffixe, et les conditions sont liées par |
. def createReg(self):
searchItems=pd.read_excel('resources/Rechercher des données.xlsx')
sortTypeCode=iniFile.get('info','sortType')
searchItemArray=np.asarray(searchItems['Rechercher un mot'])
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['Rechercher un mot'],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['Rechercher un mot'])
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)
Le processus suivant est utilisé pour extraire en fonction des conditions créées dans le processus ci-dessus.
with open
pour lire le fichier et voir s'il correspond ligne par ligne. 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)
data
resources / search data.xlsx
regExtract.exe
.