OVH Cloud OVH Cloud

prélever zones de texte

11 réponses
Avatar
remi
Bonjour,

Je souhaiterais écrire un script qui prélève certaines zones de texte
dans un fichier.
Par exemple,

\section{Titre 1}

texte à prélever et à stocker dans un fichier (numéro 1)

\section{Titre 2}

texte à prélever et à stocker dans un fichier (numéro 2)

Je sais comment faire pour l'écriture dans le fichier.
Auriez-vous un idée ? Un lien utile ?
N'ai-je pas d'autre solution que d'utiliser le module re ?
Merci.
Rémi.

1 réponse

1 2
Avatar
yves
On Sun, 13 Mar 2005 16:28:44 +0100, remi wrote:

Très bonne idée je pense ! (amha de newbie !)
En plus, le fichier in.tex est assez simple (que du texte, pas de
formules ni d'images).


Voici encore des améliorations inspirées d'un script latex2docbook en
python, trouvé sur le net:

Attention aux éventuels retours intempestifs à la ligne dans les
scripts:

#########################
# -*- coding: Latin-1 -*-
import re

file_in = open('in.tex','r')
truc = file_in.read()
file_in.close()

# attention, le code ci-dessous ne fonctionne pas si il
# existe un saut de ligne dans l'expression.
exp = r'section{(.*)}'
motif = re.compile(exp)

fic_transforme motif.sub(r'</texte>n</section>n<section>n<titre>1</titre>n<texte>',truc)
output = open('fic_de_sortie.xml','w')

output.write('<?xml version="1.0"
encoding="ISO-8859-1"?>n<document>n<section>n<titre>pur
latex</titre>n<texte>')

output.write(fic_transforme)
output.write('n</texte>n</section>n</document>')
output.close()
###############################
puis

##############################
# -*- coding: Latin-1 -*-

from xml.dom import minidom

xmldoc = minidom.parse('fic_de_sortie.xml')

s = xmldoc.getElementsByTagName('section')

for i in range(len(s)):
print '*************'
print i
print
s[i].getElementsByTagName('titre')[0].firstChild.data.encode('latin-1')
print
s[i].getElementsByTagName('texte')[0].firstChild.data.encode('latin-1').strip()

###################################"
--
Yves

1 2