Je suis newbie en python.
Je souhaiterais écrire un script qui me permette de récupérer dans un
fichier in.tex tous les titres. Dans in.tex, ils s'écrivent ainsi :
\section{phrase à récupérer et à écrire ailleurs}
# affiche toutes les lignes du fichier et les stocke
# ds la variable lignes
lignes = file_in.readlines()
# on cherche en regexp (?) tous les titres de sections ]*)?>[\s\S]*
listes_sections = re.findall('section\{]*?>[\s\S]*\}',lignes)
# on imprime les titres de section dans un fichier
for i in listes_sections:
file_sections.write(i)
#fermeture et/ou ecriture des fichiers
file_in.close()
file_sections.close()
ça marche pas et j'ai le msg suivant :
File "tex2sql.py", line 20, in ?
listes_sections = re.findall('section\{]*?>[\s\S]*\}',lignes)
File "/usr/lib/python2.3/sre.py", line 166, in findall
return _compile(pattern, 0).findall(string)
TypeError: expected string or buffer
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yermat
Bonjour,
Je suis newbie en python. Je souhaiterais écrire un script qui me permette de récupérer dans un fichier in.tex tous les titres. Dans in.tex, ils s'écrivent ainsi : section{phrase à récupérer et à écrire ailleurs}
# affiche toutes les lignes du fichier et les stocke # ds la variable lignes lignes = file_in.readlines()
Ici lignes est une *liste* de String donc forcément à la ligne d'après ça va pas aller !
Essayez : listes_sections = [] for ligne in file_in listes_sections.extend(re.findall('section{]*?>[sS]*}',ligne))
[...]
-- Yermat
Bonjour,
Je suis newbie en python.
Je souhaiterais écrire un script qui me permette de récupérer dans un
fichier in.tex tous les titres. Dans in.tex, ils s'écrivent ainsi :
section{phrase à récupérer et à écrire ailleurs}
Je suis newbie en python. Je souhaiterais écrire un script qui me permette de récupérer dans un fichier in.tex tous les titres. Dans in.tex, ils s'écrivent ainsi : section{phrase à récupérer et à écrire ailleurs}
Je suis newbie en python. Je souhaiterais écrire un script qui me permette de récupérer dans un fichier in.tex tous les titres. Dans in.tex, ils s'écrivent ainsi : section{phrase à récupérer et à écrire ailleurs}
# affiche toutes les lignes du fichier et les stocke # ds la variable lignes lignes = file_in.readlines()
Ici lignes est une *liste* de String donc forcément à la ligne d'après ça va pas aller !
Essayez : listes_sections = [] for ligne in file_in listes_sections.extend(re.findall('section{]*?>[sS]*}',ligne))
[...]
Ou : listes_sections = [re.findall('section{]*?>[sS]*}',ligne) for ligne in lignes]
Ce à quoi j'ajouterai deux conseils:
1/ utiliser une rawstring pour l'expression, c'est plus lisible (cf la doc python, module re)
2/ compiler l'expression avant de l'utiliser, ça évite qu'elle le soit (recompilée) à chaque tour de boucle.
HTH -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
Yermat wrote:
Bonjour,
Je suis newbie en python.
Je souhaiterais écrire un script qui me permette de récupérer dans un
fichier in.tex tous les titres. Dans in.tex, ils s'écrivent ainsi :
section{phrase à récupérer et à écrire ailleurs}
Je suis newbie en python. Je souhaiterais écrire un script qui me permette de récupérer dans un fichier in.tex tous les titres. Dans in.tex, ils s'écrivent ainsi : section{phrase à récupérer et à écrire ailleurs}
# affiche toutes les lignes du fichier et les stocke # ds la variable lignes # on cherche en regexp (?) tous les titres de sections ]*)?>[sS]* # listes_sections = re.findall('section{]*?>[sS]*}',lignes) listes_sections = [] for ligne in file_in: listes_sections.extend(re.findall('section{.*}',ligne))
# on imprime les titres de section dans un fichier for i in listes_sections: file_sections.write(i[8:-1]+'n')
#fermeture et/ou ecriture des fichiers file_in.close() file_sections.close()
******************* -- Yves
On Tue, 15 Feb 2005 00:06:33 +0100, remi <remi@non.com> wrote:
# affiche toutes les lignes du fichier et les stocke
# ds la variable lignes
# on cherche en regexp (?) tous les titres de sections ]*)?>[sS]*
# listes_sections = re.findall('section{]*?>[sS]*}',lignes)
listes_sections = []
for ligne in file_in:
listes_sections.extend(re.findall('section{.*}',ligne))
# on imprime les titres de section dans un fichier
for i in listes_sections:
file_sections.write(i[8:-1]+'n')
#fermeture et/ou ecriture des fichiers
file_in.close()
file_sections.close()
# affiche toutes les lignes du fichier et les stocke # ds la variable lignes # on cherche en regexp (?) tous les titres de sections ]*)?>[sS]* # listes_sections = re.findall('section{]*?>[sS]*}',lignes) listes_sections = [] for ligne in file_in: listes_sections.extend(re.findall('section{.*}',ligne))
# on imprime les titres de section dans un fichier for i in listes_sections: file_sections.write(i[8:-1]+'n')
#fermeture et/ou ecriture des fichiers file_in.close() file_sections.close()
******************* -- Yves
yves
On Tue, 15 Feb 2005 11:19:51 GMT, (Yves) wrote:
Moins mauvais: voir http://www.amk.ca/python/howto/regex/regex.html#SECTION000420000000000000000
# affiche toutes les lignes du fichier et les stocke # ds la variable lignes # on cherche en regexp (?) tous les titres de sections ]*)?>[sS]* # listes_sections = re.findall('section{]*?>[sS]*}',lignes) listes_sections = [] for ligne in file_in: listes_sections.extend(re.findall('\section{.*}',ligne))
# on imprime les titres de section dans un fichier for i in listes_sections: file_sections.write(i[9:-1]+'n')
#fermeture et/ou ecriture des fichiers file_in.close() file_sections.close() ###############################
-- Yves
On Tue, 15 Feb 2005 11:19:51 GMT, yves@RETIRER_NOSPAM.fr.invalid
(Yves) wrote:
Moins mauvais:
voir
http://www.amk.ca/python/howto/regex/regex.html#SECTION000420000000000000000
# affiche toutes les lignes du fichier et les stocke
# ds la variable lignes
# on cherche en regexp (?) tous les titres de sections ]*)?>[sS]*
# listes_sections = re.findall('section{]*?>[sS]*}',lignes)
listes_sections = []
for ligne in file_in:
listes_sections.extend(re.findall('\\section{.*}',ligne))
# on imprime les titres de section dans un fichier
for i in listes_sections:
file_sections.write(i[9:-1]+'n')
#fermeture et/ou ecriture des fichiers
file_in.close()
file_sections.close()
###############################
# affiche toutes les lignes du fichier et les stocke # ds la variable lignes # on cherche en regexp (?) tous les titres de sections ]*)?>[sS]* # listes_sections = re.findall('section{]*?>[sS]*}',lignes) listes_sections = [] for ligne in file_in: listes_sections.extend(re.findall('\section{.*}',ligne))
# on imprime les titres de section dans un fichier for i in listes_sections: file_sections.write(i[9:-1]+'n')
#fermeture et/ou ecriture des fichiers file_in.close() file_sections.close() ###############################
-- Yves
bruno modulix
Yermat wrote:
bruno modulix wrote:
Ou : listes_sections = [re.findall('section{]*?>[sS]*}',ligne) for ligne in lignes]
Ouais sauf que là, tu te retrouve avec une liste de liste de String :-D Note que j'avais utiliser "extend" et non "append".
oops ! Faudrait que je songe à dormir un peu un des ces jours !-)
-- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
Yermat wrote:
bruno modulix wrote:
Ou :
listes_sections = [re.findall('section{]*?>[sS]*}',ligne)
for ligne in lignes]
Ouais sauf que là, tu te retrouve avec une liste de liste de String :-D
Note que j'avais utiliser "extend" et non "append".
oops ! Faudrait que je songe à dormir un peu un des ces jours !-)
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb@xiludom.gro'.split('@')])"
Ou : listes_sections = [re.findall('section{]*?>[sS]*}',ligne) for ligne in lignes]
Ouais sauf que là, tu te retrouve avec une liste de liste de String :-D Note que j'avais utiliser "extend" et non "append".
oops ! Faudrait que je songe à dormir un peu un des ces jours !-)
-- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
remi
On Tue, 15 Feb 2005 11:19:51 GMT, [...]
Merci pour ces réponses ! C'est exactement ça et ça fonctionne. Je vais pouvoir continuer à bricoler ma moulinette qui mange du *.tex pour fabriquer du *.sql. @+ Rémi.
On Tue, 15 Feb 2005 11:19:51 GMT, yves@RETIRER_NOSPAM.fr.invalid
[...]
Merci pour ces réponses ! C'est exactement ça et ça fonctionne.
Je vais pouvoir continuer à bricoler ma moulinette qui mange du *.tex
pour fabriquer du *.sql.
@+
Rémi.
Merci pour ces réponses ! C'est exactement ça et ça fonctionne. Je vais pouvoir continuer à bricoler ma moulinette qui mange du *.tex pour fabriquer du *.sql. @+ Rémi.