J'essaie d'amincir les fichiers texte de bavardage que je reçois de mon gestionnaire de référence, car il laisse des champs supplémentaires qui finissent par être tronqués lorsque je les mets dans LaTeX.regex pour éliminer le champ dans le fichier bibtex
Une entrée caractéristique que je veux nettoyer est:
@Article{Kholmurodov:2001p113,
author = {K Kholmurodov and I Puzynin and W Smith and K Yasuoka and T Ebisuzaki},
journal = {Computer Physics Communications},
title = {MD simulation of cluster-surface impacts for metallic phases: soft landing, droplet spreading and implantation},
abstract = {Lots of text here. Even more text.},
affiliation = {RIKEN, Inst Phys {\&} Chem Res, Computat Sci Div, Adv Comp Ctr, Wako, Saitama 3510198, Japan},
number = {1},
pages = {1--16},
volume = {141},
year = {2001},
month = {Dec},
language = {English},
keywords = {Ethane, molecular dynamics, Clusters, Dl_Poly Code, solid surface, metal, Hydrocarbon Thin-Films, Adsorption, impact, Impact Processes, solid surface, Molecular Dynamics Simulation, Large Systems, DL_POLY, Beam Deposition, Package, Collision-Induced Desorption, Diamond Films, Vapor-Deposition, Transition-Metals, Molecular-Dynamics Simulation},
date-added = {2008-06-27 08:58:25 -0500},
date-modified = {2009-03-24 15:40:27 -0500},
pmid = {000172275000001},
local-url = {file://localhost/User/user/Papers/2001/Kholmurodov/Kholmurodov-MD%20simulation%20of%20cluster-surface%20impacts-2001.pdf},
uri = {papers://B08E511A-2FA9-45A0-8612-FA821DF82090/Paper/p113},
read = {Yes},
rating = {0}
}
Je voudrais éliminer les champs comme mois, résumé, mots-clés, etc. dont certains sont des lignes simples et dont certains sont plusieurs lignes .
Je lui ai donné un essai en Python et comme ceci:
fOpen = open(f,'r')
start_text = fOpen.read()
fOpen.close()
# regex
out_text = re.sub(r'^(month).*,\n','',start_text)
out_text = re.sub(r'^(annote)((.|\n)*?)\},\n','',out_text)
out_text = re.sub(r'^(note)((.|\n)*?)\},\n','',out_text)
out_text = re.sub(r'^(abstract)((.|\n)*?)\},\n','',out_text)
fNew = open(f,'w')
fNew.write(out_text)
fNew.close()
J'ai essayé d'exécuter ces expressions rationnelles à TextMate pour voir si elles fonctionnent avant de leur donner un essai en Python et ils semblent être ok .
Des suggestions?
Merci.
Oui - merci. Je pense que cela fait le travail. Et merci pour l'avertissement. Heureusement dans ce cas, je ne pense pas que je devrais rencontrer des instances qui provoquent l'expression rationnelle que vous suggérez d'échouer. – dtlussier
Oh - juste une chose rapide pour quelqu'un qui voit cela plus tard. Pour utiliser les drapeaux multilignes et pointillés comme suggéré ici, vous devez d'abord compiler l'expression regex. Donc: 'text_out = re.sub (re.compile (, re.DOTALL | re.MULTILINE), , original))' Notez que pour utiliser plus d'un drapeau, vous les mettez ensemble en utilisant l'opérateur '|' ou. –
dtlussier
@dltussier: La compilation de l'expression rationnelle entraînera également une accélération lors de la réutilisation dans une boucle, par exemple. BTW, voyant un utilisateur de première fois qui * obtient instantanément * w/r/t question et le formatage des commentaires est un plaisir. :-) – Tomalak