IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

regex ou startswith


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut regex ou startswith
    Bonjour,
    Je cherche à récupérer dans un fichier les chaînes comprises entre "\exercicenew{" et le "}" qui suit.
    Je pensais utiliser pour l'instant stratswidth et endswith car je ne suis pas top à l'aise avec les regex.
    Je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with open("/.../essai_exos-ref.tex",'r') as fich:
        for ligne in fich:
            print(ligne,end="----")
            print(ligne.startswith(r'\\exe'))
    J'obtiens uniquement des False :
    Code LaTeX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    \exercicenew{S\'eparation angulaire}
    ----False
     
    ----False
     
    ----False
    \exercicenew{Doublet du sodium}
    ----False
     
    ----False
     
    ----False
    \exercicenew{\'Ecart de longueur d'onde}
    ----False
    Je suis sous Ubuntu mais je ne pense pas que ce soit le problème. Si qqn a une idée, cela doit être tout bête, je n'ai peut-être pas compris ces méthodes...

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 227
    Par défaut
    hello,
    peux-tu nous montrer le début de ton fichier ?
    Ami calmant, J.P

  3. #3
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Voici mon fichier en entier :
    Code LaTeX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    \documentclass [fleqn,a4paper,openany]{book}
    \usepackage [T1]{fontenc}
    \usepackage{amssymb}
    \usepackage[usenames,dvipsnames]{pstricks}
    \usepackage[bookmarks=true,bookmarksnumbered=true,breaklinks=true,
    hypertexnames=false,colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue]{hyperref}
     
    \makeatletter
    \def\contentsline#1#2#3#4{%
    	\ifx\\#4\\%
    	\csname l@#1\endcsname{#2}{#3}%
    	\else
    	\csname l@#1\endcsname{\hyper@linkstart{link}{#4}{#2}\hyper@linkend}{%
    		\hyper@linkstart{link}{#4}{#3}\hyper@linkend
    	}%
    	\fi
    }
    \makeatother
     
    \begin{document}
     
     
    \newcounter{NumeroExerciceNew}
    \renewcommand{\theNumeroExerciceNew}{\thechapter .\,\arabic{NumeroExerciceNew}}
     
    \newcounter{NumeroSolutionNew}
    \renewcommand{\theNumeroSolutionNew}{\thechapter .\,\arabic{NumeroSolutionNew}}
     
    \newif\ifeleve
    %\newcounter{NumeroExerciceNew}
     
    \newcommand\exercicenew[1]{%
    	\par\medskip%
    	\stepcounter{NumeroExerciceNew}%
    	\setlength{\parindent}{0cm}%
    	\setlength{\hangindent}{0cm}%
    	\psshadowbox[linewidth=1.5pt,fillcolor=yellow!30,shadowsize=5pt,shadow=true,shadowcolor=red!20,linecolor=red,framearc=0.5]{$ \blacktriangleright $ \textbf{Exercice \thechapter .\,\arabic{NumeroExerciceNew}~: #1\ifeleve\else\label{#1-solu} \hyperref[#1-enon]{$\Rightarrow$ Corrigé}\fi}}%
    	\addcontentsline{exonew}{exercicenew}{\protect\numberline{\theNumeroExerciceNew}#1}%
    	\par
    }
    \newcommand*\seteleve[1]{%
    	\elevefalse\ifcsname eleve#1\endcsname\csname eleve#1\endcsname\fi
    }
     
     
     
    \newcommand{\solutionnew}[1]% 
    {% 
    	%\hypertarget{#1-enon}{
    	\par% 
    	\stepcounter{NumeroSolutionNew}% 
    	\medskip% 
    	\setlength{\parindent}{0cm}% 
    	\setlength{\hangindent}{0cm}% 
    	\par%
    	\psshadowbox[linewidth=1.5pt,fillcolor=blue!10,shadowsize=5pt,shadow=true,shadowcolor=blue!10,
    	linecolor=blue,framearc=0.5]{$ \blacktriangleright $ \textbf{Solution de l'exercice \thechapter .\,\arabic{NumeroSolutionNew}~: #1 %\begin{Prof} 
    			\label{#1-enon} \hyperref[#1-solu]{$\Rightarrow$ \'Enoncé}
    			%\end{Prof}
    		}
    	}
    	\addcontentsline{solnew}{solutionnew}{\protect\numberline{\theNumeroSolutionNew}#1}
    	\par%}
    }
     
     
    \section{Exercices~: Réseaux}
    \subsection{\'Enoncés}
     
    \exercicenew{Spectrom\`etre \`a r\'eseau}
     
     
    \exercicenew{S\'eparation angulaire}
     
     
    \exercicenew{Doublet du sodium}
     
     
    \exercicenew{\'Ecart de longueur d'onde}
     
     
     
    \exercicenew{Monochromateur \`a r\'eseau}
     
     
    \subsection{Corrigés}
     
    \solutionnew{Spectrom\`etre \`a r\'eseau}
     
     
    \solutionnew{S\'eparation angulaire}
     
    \solutionnew{Doublet du sodium}
     
    \solutionnew{\'Ecart de longueur d'onde}
     
     
    \solutionnew{Monochromateur \`a r\'eseau}
     
     
    \end{document}

  4. #4
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    En fait, pour être précis sur la finalité de mon programme, il va falloir que je parcours tous les fichiers d'un répertoire, que j'extraie les chaînes comprises entre \exercicenew{ et } ainsi que \solutionnew{ et } puis que je remplace les caractères accentués par des trucs bizarres :
    é par \'e, è par \`e, à par \`a, ...

  5. #5
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 227
    Par défaut
    Citation Envoyé par marco056 Voir le message
    puis que je remplace les caractères accentués par des trucs bizarres :
    é par \'e, è par \`e, à par \`a, ...
    D'après le fichier source c'est pas plutôt l'inverse ? Dans ce cas pourquoi ne pas faire un remplacement global dans tout le fichier par des replace ?

  6. #6
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Non, ce n'est pas l'inverse. Dans mon exemple, c'est déjà fait à la main.
    Je suis obligé de le faire dans mes titres d'exercices pour des problèmes de référence mais si je le fais pour tout le contenu de mes fichiers, cela devient franchement illisible.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Regex] Plusieurs motifs
    Par sissi_l dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 29/06/2004, 14h15
  2. [jakarta][regex]Matcher mot en entier.
    Par thibaut dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 26/05/2004, 13h33
  3. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22
  4. [regex][string] replaceAll bogué ?
    Par 7eme dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 13/11/2003, 16h36
  5. Cherche regex...
    Par laurent_h dans le forum C
    Réponses: 4
    Dernier message: 31/03/2003, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo