dimanche 20 décembre 2015

Gutenberg






.
https://www.gutenberg.org/
Traduire cette page
10 oct. 2015 - Offers over 45000 free eBooks (in various languages) that can be downloaded to users' PC or portable device.
‎Online Book Catalog - ‎Category:Bookshelf - ‎Top 100 - ‎Categorias
Vous avez consulté cette page le 20/12/15.
Browse By Language: French - Project Gutenberg

https://www.gutenberg.org/browse/languages/fr
Abbadie, Arnauld d', 1815-1894? Douze ans de séjour dans la Haute-Éthiopie (French) (as Author). About, Edmond, 1828-1885 · Germaine (French) (as Author) ...
.

gutenberg.loire-atlantique.e-lyco.fr/
Ne plus afficher ce message. accueil Collège Gutenberg - Saint-Herblain ... par webmestre gutenberg le 09 nov. 2015 à 00:14. Qui était Johannes Gutenberg?
Projet Gutenberg — Wikipédia

https://fr.wikipedia.org/wiki/Projet_Gutenberg
Le projet Gutenberg est une bibliothèque de versions électroniques libres (parfois appelés e-texts) de livres physiquement existants. Les textes fournis sont ...
Collège Gutenberg de Malesherbes
clg-gutenberg-malesherbes.tice.ac-orleans-tours.fr/eva/
Bienvenue sur le site du Collège Gutenberg ... 29 novembre. Venez découvrir la première édition de la webradio du collège Gutenberg... Lire la suite ...
Bibliothèque Gutenberg - Paris.fr

equipement.paris.fr/bibliotheque-gutenberg-1736
Bibliothèque Gutenberg. Photo de l'équipement Bibliothèque Gutenberg. photos Estelle Poulalion. voir le diaporama. SERVICES. Wi-fi. 1. Accès. 8 rue de la ...
Bienvenue au Centre Socioculturel Gutenberg

www.centregutenberg.com/
Le Centre Socioculturel Gutenberg est agréé par la Caisse d'Allocations Familiales, conventionné avec la mairie de Grabels, et adhérent à la fédération ...
Gutenberg Technology, a SaaS game-changing solution to ...

www.gutenberg-technology.com/
Traduire cette page
Gutenberg Technology provides solutions to digitalize your content on every device in a really engaging learning experience.
Lycée Gutenberg de Créteil
lycee-gutenberg-creteil.fr/
Le lycée Gutenberg de Créteil propose les voies générales, technologiques et professionnelles, filière sanitaire et sociale, IFAS-IFAP.

vendredi 18 décembre 2015

C python

.Résultats de recherche
CPython — Wikipédia

ttps://fr.wikipedia.org/wiki/CPython
CPython est l'implémentation de référence du langage Python. C'est un interpréteur de ... CPython fonctionne sur un très grand nombre de plates-formes : ...
‎Plates-formes supportées - ‎Le Global Interpreter Lock - ‎Extension
CPython - Wikipedia, the free encyclopedia

https://en.wikipedia.org/wiki/CPython
Traduire cette page
CPython is the default, most widely used implementation of the Python programming language. It is written in C. CPython is a source code interpreter. It has a ...
Python vs Cpython - Stack Overflow

stackoverflow.com/questions/.../python-vs-cpython
Traduire cette page
16 juin 2013 - What's all this fuss about Python and Cpython (Jython,IronPython), ... So what is CPython. CPython is the original Python implementation. It is the ...
python/cpython · GitHub

https://github.com/python/cpython
Traduire cette page
cpython - Semi-official read-only mirror of the CPython Mercurial repository.
Cython: C-Extensions for Python
cython.org/
Traduire cette page
The C code is generated once and then compiles with all major C/C++ compilers in CPython 2.6, 2.7 (2.4+ with Cython 0.20.x) as well as 3.2 and all later ...
CPython - Python Wiki

https://wiki.python.org/moin/CPython
Traduire cette page
15 nov. 2008 - CPython is Guido van Rossum's reference version of the Python computing language. It's most often called simply "Python"; speakers say ...
Picking an Interpreter — The Hitchhiker's Guide to Python

docs.python-guide.org/en/latest/.../which-python/
Traduire cette page
When people speak of Python they often mean not just the language but also the CPython implementation. Python is actually a specification for a language that ...
Why Are There So Many Pythons? - Toptal

www.toptal.com › Blog
Traduire cette page
18 sept. 2013 - Returning to CPython implementation, the toolchain process is as follows: CPython compiles your Python source code into bytecode.
Philip Guo - CPython internals: A ten-hour codewalk through ...
pgbovine.net/cpython-internals.htm
Traduire cette page
8 oct. 2014 - Here are nine lectures walking through the internals of CPython, the canonical Python interpreter implemented in C. They were from a dynamic ...
Differences between PyPy and CPython — PyPy 4.0.0 ...
doc.pypy.org/en/latest/cpython_differences.html
Traduire cette page
This page documents the few differences and incompatibilities between the PyPy Python interpreter and CPython. Some of these differences are “by design”, ...

jeudi 17 décembre 2015

les sockets en langage python





Réseau / socket - Python Apprendre programmation Django ...
apprendre-python.com › Python avancé
Utiliser les sockets en python - réseau - cours débutant. ... des sockets avec python, nous allons travailler avec deux fichiers: server.py et client.py. Le premier ...
[PDF]Python – Cours 5 - Programmation réseau
igm.univ-mlv.fr/~jyt/python/python_5.pdf

Programmation réseau ... On ne trouve pas tout dans la doc de Python (cf. man socket) .... On peut accéder au niveau 2 (ex. ethernet) avec les socquettes.
Page 20 - Apprendre à programmer avec Python
python.developpez.com/cours/TutoSwinnen/?page=page_20
Pour pouvoir utiliser les ports de communication réseau, les programmes font appel à ..... En fait, le flux d'instructions de n'importe quel programme Python suit ...
Le réseau - OpenClassrooms

openclassrooms.com › Cours › Apprenez à programmer en Python
2 déc. 2015 - Apprenez à programmer en Python .... Si le serveur d'OpenClassrooms ne pouvait dialoguer qu'avec un seul client à la fois, il faudrait ... que nous allons utiliser va bloquer le programme tant qu'aucun client ne s'est connecté.
Chapitre 14 - Cours de programmation en langage Python ...
fsincere.free.fr/isn/python/cours_python_reseau.php
Les applications et jeux en réseau se basent sur le modèle clients/serveur. ... Ainsi, pour un jeu en réseau avec 10 joueurs (soit 10 clients et 1 serveur), il faut ...
Les sockets avec python
venom630.free.fr/geo/tutz/programmation/python/sockets/
la simplicité du langage utilisé (ici, python) ;; la notion de réseau (que nous ... Maintenant, on passe à la partie programmation (qui est déjà plus intéressante !).

Communiquer en réseau avec son programme ...
web.univ-pau.fr/.../python/.../tutoriel-3-11396-0-communiquer-en-resea...
Ah... Le réseau... C'est un peu le fantasme de la plupart des nouveaux programmeurs : arriver à faire en sorte que son programme puisse communiquer à ...
[PDF]Programmation réseau en Python

mathmac.free.fr/Reseau/DocumentationTeX/ProgrammationReseau.pdf
un programme Python, pour savoir quelle est l'adresse de l'ordinateur (de l'hôte) ....
socket (du moins avec le genre d'assurance qu'on peut avoir sur un réseau, ...
Programmation réseau en Python - #ProgX

www.progx.org/index.php?section=articles&article=Python/article13
14 oct. 2006 - Bâtie au cour de ces modules, l'API réseau de Python se révèle être un ... 'irc.helix.org') soit par son adresse IP (ici avec IPv4 '127.0.0.1').
Programmation avancée Python (Logilab - logiciel, conseil ...

https://www.logilab.fr/formations/python-avance
1 déc. 2011 - Programmation réseau avec la bibliothèque standard Python. module socket , module asyncore , module socketserver .
Recherches associées à programmation reseau avec python

Programmation en langage python




Python (langage) — Wikipédia

https://fr.wikipedia.org/wiki/Python_(langage)
Aller à Programmation fonctionnelle - [modifier | modifier le code]. Python permet de programmer dans un style fonctionnel. Les compréhensions de ...
‎Utilisations - ‎Historique - ‎Caractéristiques - ‎Bibliothèque standard
Vous avez consulté cette page de nombreuses fois. Date de la dernière visite : 05/12/15
Apprenez à programmer en Python - OpenClassrooms

https://openclassrooms.com/courses/apprenez-a-programmer-en-python
2 déc. 2015 - Vous n'y connaissez rien en programmation et vous souhaitez apprendre un langage clair et intuitif ? Ce cours d'initiation à Python est fait pour ...
‎Qu'est-ce que Python - ‎Premiers pas avec - ‎Les structures conditionnelles - ‎Le temps
Vous avez consulté cette page de nombreuses fois. Date de la dernière visite : 05/12/15
Télécharger Python - 01net.com - Telecharger.com

www.01net.com › ... › Développement › Creation de logiciel
Note : 3,5 - ‎2 votes
Connu pour être un langage structuré, solide et multiplateforme, le langage de programmation orienté objet Python est très souvent utilisé par les enseignants ...
Vous avez consulté cette page de nombreuses fois. Date de la dernière visite : 28/11/15
Introduction au langage Python - Cours de programmation ...
fsincere.free.fr/isn/python/cours_python.php
En 1989, le hollandais Guido van Rossum commence le développement du langage de programmation Python. Python est un langage multiplateforme, ...
Images correspondant à le programme pythonSignaler des images inappropriées

apprendre-python.com/
Python Django Raspberry Pi apprendre langage de programmation - Cours tutorial exercices tutoriels pour débutants et programmeurs confirmés - doc ...
‎Installer Python - ‎Interpréteur python - ‎Présentation Django - ‎Calculs et variables
Apprendre à programmer avec Python - Programmation ...
framasoft.net/article1971.html
Voici ce que l'auteur nous dit de Python sur le site Python Blanc Bleu Belge : Python est un merveilleux langage de programmation. Moderne, portable, puissant ...
[PDF]Apprendre à programmer avec Python - Framasoft

framasoft.net/IMG/pdf/python_notes-2.pdf
Apprendre à programmer avec Python par Gérard Swinnen professeur et conseiller pédagogique. Institut St Jean Berchmans - Ste Marie. 59, rue des Wallons ...
Vous avez consulté cette page le 13/12/15.
Débuter avec Python au lycée
python.lycee.free.fr/
Tutoriel destiné principalement aux lycéens, pour l'apprentissage de Python dans le cadre de l'algorithmique au programme de mathématiques du lycée ...
Python | Codecademy

https://www.codecademy.com/fr/learn/python
Python. Apprenez les fondamentaux de la programmation pour développer des applications Web et gérer des données. Start ...
Recherches associées à le programme python

comment installer un controle acive x sur votre site ?



Régler les paramètres ActiveX d'Internet Explorer - Aide ...

windows.microsoft.com/fr-fr/windows/help/genuine/ie-activex
Découvrez comment paramétrer Internet Explorer de façon à installer un contrôle ActiveX afin de permettre l'exécution du contrôle de validation de l'authenticité ...
Dois-je installer des contrôles ActiveX ? - Aide de Windows

windows.microsoft.com/fr-fr/windows/should-install-activex-controls
Peut-être. Soyez prudent lorsque vous installez sur votre ordinateur des contrôles ActiveX, parfois appelés modules complémentaires, même s'ils possèdent ...
Controle active X, comment les activer ? [Résolu] - Comment Ça Marche

www.commentcamarche.net › Forum › Internet
5 sept. 2013 - Un site internet me demande d'activer le controle active x sur la barre d information internet explorer, comment dois je faire ? Merci a tous, Cdlt.
Active X désactivé suite à une mise à jour Windows [Résolu ... 10 déc. 2014
Controle Active X comment les activer ?? 17 févr. 2014
Contrôle active x mis a jour windows 2 sept. 2010
Windows bloque l'installation d'un active X [Résolu] 30 juin 2006

Autres résultats sur www.commentcamarche.net
Problème avec les contrôles Active X. Que faire - L'Internaute

www.linternaute.com › High Tech › Pratique › Internet › Divers
Ce dernier indique qu'un petit logiciel (un plug-in Active X) ne peut pas être chargé sur votre ordinateur, alors que son utilisation est requise pour l'affichage du ...
Les contrôle active X c'est quoi et à quoi ça sert ? - Portail ...
vaed.forumactif.org/t141-les-controle-active-x-c-est-quoi-et-a-quoi-ca-sert
Bonjour à tous, Après une sérieuse recherche sur Internet, j'ai trouvé un petit texte qui, selon moi, explique bien clairement ce que sont les ActiveX et le pou.
Comment autoriser les contrôles ActiveX ? - 01Net

www.01net.com/.../comment-autoriser-les-controles-activex-257063.html
26 nov. 2004 - Quand les paramètres de sécurité d'Internet Explorer sont fixés à un niveau élevé, les contrôles Active X sont automatiquement bloqués.
Activer ou désactiver des contrôles ActiveX dans des ...

https://support.office.com/.../Activer-ou-désactiver-des-contrôles-Active...
Activer les contrôles ActiveX lorsque l'avertissement de sécurité s'affiche. Modifier les ... Un espace réservé en X rouge ou une image du contrôle s'affiche.
Comment puis-je configurer Internet Explorer pour autoriser ...

www.dlink.com/.../fr_comment-puis-je-configurer-internet-explorer-pou...
Note : Si vous avez des programmes antivirus ou pare-feu en cours d'exécution, assurez-vous qu'ils ne bloquent pas les contrôles ActiveX d'être téléchargé ou ...
Internet explorer - bloquer ou débloquer les contrôles activex
forums.cnetfrance.fr/.../96088-internet-explorer--bloquer-ou-debloquer-...
16 août 2008 - 1 message - ‎1 auteur
Pour des raisons de sécurité Internet Explorer bloque par défaut les pages qui contiennent certains contrôles Activex en considérant que ...
ActiveX — Wikipédia

https://fr.wikipedia.org/wiki/ActiveX
Les ActiveX se déclinent sous forme de contrôles, de documents et de scripts. Un contrôle ActiveX est un fichier portant l'extension « .ocx ». Ces fichiers ...

mercredi 16 décembre 2015

Polymorphisme et programmation orientée objet


Programmation/Programmation orientée objet/Polymorphisme

https://fr.wikibooks.org/.../Programmation/Programmation_orientée_obj...
Le mot polymorphie vient du grec et signifie "qui peut prendre plusieurs formes". Dans la programmation orienté objet, le polymorphisme est utilisé en relation ...
POO - Le polymorphisme - Comment Ça Marche

www.commentcamarche.net/contents/811-poo-le-polymorphisme
Programmation Orientée Objet ... Définition du polymorphisme; Le polymorphisme ad hoc; Le polymorphisme paramétrique; Le polymorphisme d'héritage; A lire ...
‎Définition du polymorphisme - ‎Le polymorphisme ad hoc
Polymorphisme (informatique) — Wikipédia

https://fr.wikipedia.org/wiki/Polymorphisme_(informatique)
En programmation orientée objet, on parle souvent de programmation générique et en programmation fonctionnelle, on parle simplement de polymorphisme ...
‎Polymorphisme paramétré - ‎Polymorphisme par sous-typage - ‎Création de types
Le polymorphisme - OpenClassrooms
openclassrooms.com › Cours › Programmez avec le langage C++
9 déc. 2015 - Dans son programme, il aurait les classes suivantes : Vehicule , Voiture et Moto . .... Ce peut être un objet réellement de type Vehicule mais aussi une Voiture ou, comme dans ..... [Théorie] La Programmation Orientée Objet.
[Java] Poo, héritage et polymorphisme - OpenClassrooms

openclassrooms.com › Forum › Programmation › Langage Java
4 mai 2007 - Bonjour à tous et à chacun :) Après avoir suivis les cours de C de Matteo, je m'attaque à l'apprentissage du Java. Comme il y a peu de cours ...
Introduction à la Programmation Orientée Objet - Hdd34
hdd34.developpez.com/cours/artpoo/
25 juil. 2004 - Il est impossible de parler de Programmation Orientée Objet sans parler d'objet .... Le polymorphisme traite de la capacité de l'objet à posséder ...
Comprendre l'ordinateur - La programmation objet : héritage ...
sebsauvage.net/comprendre/objet/objet_heritage.html
C'est quoi le polymorphisme ? ... Quand vous avez un objet sous la main, vous voulez pouvoir le déplacer sans avoir ... Tous ce que vous venez de voir constitue les fondements de la programmation objet (ou programmation orientée objet).
[PDF]Polymorphisme - FIL - Université Lille 1

www.fil.univ-lille1.fr/~routier/.../poo/.../polymorphisme_et_interface.pdf
Polymorphisme des méthodes. Polymorphisme des objets. Transtypage. Exemple. Polymorphisme. Programmation Orientée Objet. Jean-Christophe Routier.
Polymorphisme (Guide de programmation C#) - MSDN
https://msdn.microsoft.com/fr-fr/library/ms173152.aspx
Le polymorphisme est souvent considéré comme le troisième pilier d'une programmation orientée objet, après l'encapsulation et l'héritage. Le polymorphisme ...
Introduction à la programmation orientée objet | Design ...
design-patterns.fr/introduction-a-la-programmation-orientee-objet
13 sept. 2009 - La programmation orientée objet (POO) ou programmation par objet, est un ... par 3 fondamentaux : encapsulation, héritage et polymorphisme.
Recherches associées à polymorphisme programmation orientée objet
programmation orientée objet pdf
programmation orientée objet java
programmation orientée objet c++
programmation orientée objet définition
programmation orientée objet php
cours programmation orientée objet
programmation orientée objet exercices corriges
programmation orientée objet python



lundi 14 décembre 2015

Désactivez la validation automatique




13.4.1. Désactivez la validation automatique (autocommit)
Désactivez la validation automatique et faites une seule validation à la fin (en SQL, ceci signifie de lancer BEGIN au début et COMMIT à la fin. Quelques bibliothèques client pourraient le faire derrière votre dos auquel cas vous devez vous assurer que la bibliothèque le fait quand vous le voulez). Si vous permettez à chaque insertion d'être validée séparément, PostgreSQL™ fait un gros travail pour chaque ligne ajoutée. Un bénéfice supplémentaire de réaliser toutes les insertions dans une seule transaction est que si l'insertion d'une ligne échoue alors les lignes insérées jusqu'à maintenant seront annulées. Vous ne serez donc pas bloqué avec des données partiellement chargées.

13.4.2. Utilisez COPY
Utilisez COPY pour charger toutes les lignes en une seule commande, plutôt que d'utiliser une série de commandes INSERT. La commande COPY est optimisée pour charger un grand nombre de lignes ; elle est moins flexible que INSERT mais introduit significativement moins de surcharge lors du chargement de grosses quantités de données. Comme COPY est une seule commande, il n'y a pas besoin de désactiver la validation automatique (autocommit) si vous utilisez cette méthode pour remplir une table.

Si vous ne pouvez pas utiliser COPY, utiliser PREPARE pourrait vous aider à créer une instruction préparée INSERT, puis utilisez EXECUTE autant de fois que nécessaire. Ceci évite certaines surcharges lors d'une analyse et d'une planification répétées de commandes INSERT.

Notez que charger un grand nombre de lignes en utilisant COPY est pratiquement toujours plus rapide que d'utiliser INSERT, même si PREPARE est utilisé lorsque de nombreuses insertions sont groupées en une seule transaction.

13.4.3. Supprimez les index
Si vous chargez une table tout juste créée, la façon la plus rapide est de créer la table, de charger en lot les données de cette table en utilisant COPY, puis de créer tous les index nécessaires pour la table. Créer un index sur des données déjà existantes est plus rapide que de mettre à jour de façon incrémentale à chaque ligne ajoutée.

Si vous ajoutez beaucoup de données à une table existante, il pourrait être avantageux de supprimer l'index, de charger la table, puis de recréer l'index. Bien sûr, les performances de la base de données pour les autres utilisateurs pourraient être sévèrement affectées tout le temps où l'index sera manquant. Vous devez aussi y penser à deux fois avant de supprimer des index uniques car la vérification d'erreur apportée par la contrainte unique sera perdue tout le temps où l'index est manquant.

13.4.4. Suppression des contraintes de clés étrangères
Comme avec les index, une contrainte de clé étrangère peut être vérifiée « en gros volume » plus efficacement que ligne par ligne. Donc, il pourrait être utile de supprimer les contraintes de clés étrangères, de charger les données et de créer de nouveau les contraintes. De nouveau, il y a un compromis entre la vitesse de chargement des données et la perte de la vérification des erreurs lorsque la contrainte manque.

13.4.5. Augmentez maintenance_work_mem
Augmentez temporairement la variable maintenance_work_mem lors du chargement de grosses quantités de données peut amener une amélioration des performances. Ceci aidera à l'accélération des commandes CREATE INDEX et ALTER TABLE ADD FOREIGN KEY. Cela ne changera pas grand chose pour la commande COPY. Donc, ce conseil est seulement utile quand vous utilisez une des deux ou les deux techniques ci-dessus.

13.4.6. Augmentez checkpoint_segments
Augmenter temporairement la variable de configuration checkpoint_segments peut aussi aider à un chargement rapide de grosses quantités de données. Ceci est dû au fait que charger une grosse quantité de données dans PostgreSQL™ causera la venue trop fréquente de points de vérification (la fréquence de ces points de vérification est spécifiée par la variable de configuration checkpoint_timeout). Quand survient un point de vérification, toutes les pages modifiées sont écrites sur le disque. En augmentant checkpoint_segments temporairement lors du chargement des données, le nombre de points de vérification requis peut être diminué.

13.4.7. Lancez ANALYZE après
Quand vous avez changé significativement la distribution des données à l'intérieur d'une table, lancer ANALYZE est fortement recommandée. Ceci inclut le chargement de grosses quantités de données dans la table. Lancer ANALYZE (ou VACUUM ANALYZE) vous assure que le planificateur dispose de statistiques à jour sur la table. Sans statistiques ou avec des statistiques obsolètes, le planificateur pourrait prendre de mauvaises décisions lors de la planification de la requête, amenant des performances pauvres sur toutes les tables sans statistiques ou avec des statistiques inexactes.

13.4.8. Quelques notes sur pg_dump
Les scripts de sauvegarde générés par pg_dump appliquent automatiquement plusieurs des indications ci-dessus, mais pas toutes. Pour recharger une sauvegarde pg_dump aussi rapidement que possible, vous avez besoin de faire quelques étapes supplémentaires manuellement (notez que ces points s'appliquent lors de la restauration d'une sauvegarde, et non pas lors de sa création. Les mêmes points s'appliquent lors de l'utilisation de pg_restore pour charger un fichier de sauvegarde pg_dump).

Par défaut, pg_dump utilise COPY et, lorsqu'il génère une sauvegarde complexe, schéma et données, il est préférable de charger les données avant de créer les index et les clés étrangères. Donc, dans ce cas, les premières lignes de conduite sont gérées automatiquement. Ce qui vous reste à faire est d'initialiser les valeurs appropriées (c'est-à-dire plus importantes que les valeurs habituelles) pour maintenance_work_mem et checkpoint_segments avant de charger le script de sauvegarde puis d'exécuter ANALYZE.

Une sauvegarde des données seules utilise toujours COPY mais elle ne supprime ni ne recrée les index et elle ne touche généralement pas les clés étrangères. [8] Donc, lorsque vous chargez une sauvegarde ne contenant que les données, c'est à vous de supprimer et recréer les index et clés étrangères si vous souhaitez utiliser ces techniques. Il est toujours utile d'augmenter checkpoint_segments lors du chargement des données mais ne vous embêtez pas à augmenter maintenance_work_mem ; en fait, vous le ferez lors d'une nouvelle création manuelle des index et des clés étrangères. Et n'oubliez pas ANALYZE une fois que vous avez terminé.

Lexical analysis — Python



Résultats de recherche
2. Lexical analysis — Python 2.7.11 documentation

https://docs.python.org/2/.../lexical_analysis.html
Traduire cette page
Input to the parser is a stream of tokens, generated by the lexical analyzer. ..... String literals are described by the following lexical definitions: ..... Line structure.
2. Lexical analysis — Python 3.5.1 documentation

https://docs.python.org/3/.../lexical_analysis.html
Traduire cette page
The encoding is used for all lexical analysis, including string literals, .... String literals are described by the following lexical definitions: ..... Line structure. 2.1.1.
Python lexical structure - ZetCode

zetcode.com/lang/python/lexicalstructure/
Traduire cette page
17 déc. 2012 - In this part of the Python tutorial, we will talk about the lexical structure of the Python language.
[PDF]Tokens and Python's Lexical Structure

https://www.ics.uci.edu/~pattis/ICS-31/.../tokens.pdf
Traduire cette page
We begin our study of Python by learning about its lexical structure and the ... use EBNF descriptions to specify the syntax of Python's five lexical categories,.
Lexical Structure - Python in a Nutshell, 2nd Edition

https://www.safaribooksonline.com/.../python.../ch04s...
Traduire cette page
The lexical structure of a programming language is the set of basic rules that govern how you write programs in that language. It is the lowest-level syntax of the ...
Python in a Nutshell - Page 33 - Résultats Google Recherche de Livres

https://books.google.fr/books?isbn=1449379109 - Traduire cette page
Alex Martelli - 2006 - ‎Computers
To learn Python from scratch, I suggest you start with Learning Python, by Mark ... The lexical structure of a programming language is the set of basic rules that ...
Python Lexical Structure | Python Passion

pythonpassion.blogspot.com/.../python-lexical-structu...
Traduire cette page
4 févr. 2013 - Python has a lexical structure more readable for humans than other computer ... A source code of a Python program consists of tokens. Tokens ...
Python en concentré - Page 29 - Résultats Google Recherche de Livres

https://books.google.fr/books?isbn=284177290X
Alex Martelli - 2004
Python. Nous allons maintenant voir les principaux éléments du langage. ... La structure lexicale d'un langage de programmation est l'ensemble des règles de ...
4.1 Lexical Structure :: Chapter 4. The Python Language ...

etutorials.org/.../Python...Python...Python.../4.1+Lexi...
Traduire cette page
The lexical structure of a programming language is the set of basic rules that govern how you write programs in that language. It is the lowest-level syntax of the ...
Chapter 2: Lexical analysis - MIT

www.mit.edu/people/amliu/vrut/python/.../ref-4.html
Traduire cette page
This chapter describes how the lexical analyzer breaks a file into tokens. Python uses the 7-bit ASCII character set for program text and string literals. 8-bit characters may be used in string ... 2.1 Line structure. A Python program is divided in a ...
Recherches associées à structure lexical en python

Les chaînes de caractères en php



Résultats de recherche
Les chaînes de caractères - OpenClassrooms
openclassrooms.com › Cours › Apprenez à programmer en C !
2 déc. 2015 - Une chaîne de caractères, c'est donc du texte que l'on peut retenir sous forme de variable en mémoire. On pourrait ainsi stocker le nom de ...
Les chaînes de caractères - OpenClassrooms

openclassrooms.com › Cours › Dynamisez vos sites web avec JavaScript !
7 déc. 2015 - Les chaînes de caractères, représentées par l'objet String , ont déjà été .... pas avec les nombres sous forme primitive car le point est le caractère ... à la différence qu'il n'est pas possible d'accéder aux caractères en utilisant ...
Cours java : Chaîne de caractères

imss-www.upmf-grenoble.fr/prevert/Prog/.../ChainesDeCaracteres.html
Trois classes chaîne de caractères : String, StringBuffer et StringBuilder. La classe ... Sous-chaîne depuis d jusqu'au caractère d'indice f non inclus. boolean ...
Les chaînes de caractères en C

nicolasj.developpez.com/articles/libc/string/
14 nov. 2005 - III-A. Modifier la case d'une chaîne de caractère; III-B. Connaître l'index d'une sous-chaîne; III-C. Extraire une sous-chaîne; III-D. Découper une ...
Chaîne de caractères — Wikipédia

https://fr.wikipedia.org/wiki/Chaîne_de_caractères
En informatique, une chaîne de caractères est à la fois conceptuellement une ... caractère de fin de chaîne (en général 0, mais $ a également été utilisé sous ...
Chaînes de caractères - Programmation sous R

www.duclert.org/Aide-memoire-R/Le.../Chaines-de-caracteres.php
7 déc. 2013 - nchar("toto") : longueur de la chaîne de caractères (ou vecteur des longueurs si vecteur de chaînes). Par exemple nchar(c("truc", "bidule")) ...
Chaînes de caractères — documentation Cours ... - FIL

www.fil.univ-lille1.fr/~wegrzyno/portail/.../seq4_chaines_caracteres.html
14 oct. 2014 - Une chaîne de caractères (string en anglais) est une séquence de ..... aux caractères, il est possible d'accéder à des sous-chaînes en précisant ...
9.2. Manipuler les chaînes de caractères - Guide ABS
abs.traduc.org/abs-5.3-fr/ch09s02.html
Certains sont un sous-ensemble de la substitution de paramètre et les autres font ... Extrait $longueur caractères d'une sous-chaîne de $chaine à la position ...
Fonctions de chaînes de caractères
sql.sh/fonctions/chaines-de-caracteres
Les fonctions SQL sur les chaînes de caractères permettent d'ajouter de ... LOCATE() retourne la position de la première occurrence de la sous-chaîne [MySQL] ...
FAQ Caml (données de base) - Inria

caml.inria.fr/pub/old_caml_site/FAQ/donnees_de_base-fra.html
Les caractères; Les chaînes de caractères; Les tableaux; Les listes; Les booléens; Le rien ... Extraction d'une sous-chaîne: sub_string . ... liste ne sont pas numérotés car on ne peut accéder directement à un élément quelconque de la liste.

Recherches associées à accéder aux sous chaine de caractères
chaine de caractere c
chaine de caractere python
chaine de caractere php
chaine de caractere java
chaine de caractere algorithme
javascript chaine de caractere
sql chaine de caractere
couper une chaine de caractere ph

Générateur automatique de programmes


Résultats de recherche
Générateur automatique de programmes — Wikipédia

https://fr.wikipedia.org/wiki/Générateur_automatique_de_programmes
Le générateur automatique de programmes (GAP) est un langage de ... L'histoire du GAP commence avec les cartes perforées : il lui est donné pour cette raison ...
‎Description - ‎Futur - ‎Voir aussi - ‎Références
▷ indg.fr : GAP II - ancien langage informatique

www.indg.fr/MOE/gap-II.html
Le GAP II est un ancien langage d'IBM des années 70 destiné à la gestion. GAP signifie « Générateur Automatique de Programmes ». Il s'agit de la traduction ...
JYGGEN - Générateur de programmes AS400 - JYG Web
jygiraud.free.fr/spip.php?article27
16 janv. 2008 - JYGGEN, c'est quoi ça ? C'est ce que j'ai fait de plus excitant sur AS400 en programmation. C'est un générateur automatique de programmes ...
générateur automatique de programmes - Automates ...

www.automatesintelligents.com › Echanges
03 Novembre 2002. Présentation du système GAP (Générateur Automatique de Programmes). par Patrick Guedj patrick.guedj@wanadoo.fr. Les maîtres ...
Programmation RPG — Wikilivres

https://fr.wikibooks.org/wiki/Programmation_RPG
Cette page fait partie du livre Programmation. RPG est l'acronyme de Report Program Generator, francisé en GAP pour Générateur Automatique de ...
Amazon.fr - Le Générateur automatique de programme : Le ...

www.amazon.fr › ... › Programmation et langages › Langages › C
Noté 0.0/5. Retrouvez Le Générateur automatique de programme : Le langage GAP-R.P.G (A B C des langages) et des millions de livres en stock sur Amazon.fr.
gapit.net Générateur Automatique de Programme présenté ...

www.kisskissbankbank.com/gapit-net-generateur-automatique-de-progra...
Générateur. Automatique. Programme. en quelque sorte votre couteau suisse de l'informatique. De l'informatique? oui...car gapIT.net n'est pas seulement une ...
Générateur Automatique de Programmes - Abbreviation ...

www.abbreviationfinder.org/.../gap_generateur-automatique-de-program...
définition de GAP, que signifie GAP?, ce qui signifie de GAP, Générateur Automatique de Programmes, GAP Générateur Automatique de Programmes signifie.
Generation automatique de code C : Forum Langage C - Génération NT

www.generation-nt.com › ... › Développement › Langage C
14 mars 2009 - 11 messages - ‎9 auteurs
Je suppose qu'il existe des programmes qui génèrent automatiquement du code C, par exemple il me semblait avoir vu dans les sources de ...
Générateur automatique de textes : à utiliser sans modération
cursus.edu › Formations et ressources › Liste des applications
Charabia se présente comme un programme permettant la " génération automatique de textes aléatoires ". D'après ses auteurs, un tel programme " ne sert à ...


Utiliser des listes en python

Apprendre à utiliser des listes en python : list array tableaux ...

apprendre-python.com › Python débutant
Les listes (ou list / array) en python sont une variable dans laquelle on peut mettre plusieurs variables. Créer une liste en python. Pour créer une liste, rien de ...
Présentation des listes - Dive Into Python - Developpez.com

python.developpez.com › ... › Types prédéfinis
Les listes sont le type de données à tout faire de Python. Si votre seule expérience des listes sont les tableaux de Visual Basic ou (à Dieu ne plaise) les ...
Listes - FAQ Python, le club des développeurs et IT Pro
python.developpez.com › Python › FAQ Python
Cette FAQ a été réalisée à partir des questions posées sur le forum Python complétées par ... Comment concaténer les éléments d'une liste dans une string ?
Utilisation avancée des listes en Python - OpenClassrooms

openclassrooms.com › Cours
31 oct. 2013 - La liste est la structure de donnée la plus utilisée en Python. Pour programmer correctement dans ce langage, il est donc crucial de savoir ...
Vous avez consulté cette page le 28/11/15.
Les listes - OpenClassrooms
openclassrooms.com › Cours › Langage Python
5 déc. 2013 - Les listes. Nous avançons de plus en plus dans le langage Python. Nous avons vu beaucoup de choses mais nous ne nous sommes pas ...
Les listes et tuples (1/2) - OpenClassrooms
openclassrooms.com › Cours › Apprenez à programmer en Python
2 déc. 2015 - J'aurai réussi à vous faire connaître et, j'espère, aimer le langage Python sans vous apprendre les listes. Mais allons ! Cette époque est ...
Manipulation de texte - Débuter avec Python au lycée
python.lycee.free.fr/manipulations_listes_texte.html
maliste = [0, "un", 2] # on définit une liste pour faire des tests >>> len(maliste) # on demande sa longueur (length en anglais) 3 >>> maliste[0] # on demande le ...
Les listes avec python
venom630.free.fr/geo/tutz/programmation/python/listes/
Les listes en python. Vieux tutoriel que j'avais réussi à faire publier sur le site du zér0. Je l'ai finalement supprimé pour le mettre ici.
5. Data Structures — Python 2.7.11 documentation
https://docs.python.org/2/tutorial/datastructures.html
Traduire cette page
Remove the item at the given position in the list, and return it. If no index is specified, a.pop() removes and returns the last item in the list. (The square brackets ...
5. Structures de données — Python 2.7.11 documentation
www.afpy.org/doc/python/2.7/tutorial/datastructures.html
2 juil. 2011 - Retourne la position du premier élément de la liste ayant la valeur x. ... [1] This is a design principle for all mutable data structures in Python.




dimanche 13 décembre 2015

Django-fr - Framework pour le développement d'applications web.



Association francophoneAssociation francophone Association francophone python (AFPY) - Association pour la promotion du langage. Propose ses actualités et des offres d'emploi. [!]
Django-fr - Framework pour le développement d'applications web. Propose une documentation et des tutoriels pour commencer à développer. [!]
Développer des Applications Gnome avec Python - Série d'articles destinée aux débutants en programmation Gnome et GNU/Linux. [!]
Plongez au coeur de Python - Tutoriel libre destiné aux programmeurs expérimentés. [!]
Python facile - Ressources (liens) en français, exemples de modules, classes et scripts. [!]
PythonFrance.com - Sources et forums. [!]
Ressources Python - Présente le livre « Apprendre à programmer avec Python » écrit par Gérard Swinnen, offre également une version librement redistribuable en téléchargement et un recueil de liens utiles. [!]
Sweet - Groupe de travail de programmation. [!]
VPython - Fournit une référence à cette version du langage couplée d'un module graphique 3D. (AFPY) - Association pour la promotion du langage. Propose ses actualités et des offres d'emploi. [!]
Django-fr - Framework pour le développement d'applications web. Propose une documentation et des tutoriels pour commencer à développer. [!]
Développer des Applications Gnome avec Python - Série d'articles destinée aux débutants en programmation Gnome et GNU/Linux. [!]
Plongez au coeur de Python - Tutoriel libre destiné aux programmeurs expérimentés. [!]
Python facile - Ressources (liens) en français, exemples de modules, classes et scripts. [!]
PythonFrance.com - Sources et forums. [!]
Ressources Python - Présente le livre « Apprendre à programmer avec Python » écrit par Gérard Swinnen, offre également une version librement redistribuable en téléchargement et un recueil de liens utiles. [!]
Sweet - Groupe de travail de programmation. [!]
VPython - Fournit une référence à cette version du langage couplée d'un module graphique 3D. (AFPY) - Association pour la promotion du langage. Propose ses actualités et des offres d'emploi. [!]

Django-fr - Framework pour le développement d'applications web. Propose une documentation et des tutoriels pour commencer à développer. [!]

Développer des Applications Gnome avec Python - Série d'articles destinée aux débutants en programmation Gnome et GNU/Linux. [!]
Plongez au coeur de Python - Tutoriel libre destiné aux programmeurs expérimentés. [!]
Python facile - Ressources (liens) en français, exemples de modules, classes et scripts. [!]

PythonFrance.com - Sources et forums. [!]
Ressources Python - Présente le livre « Apprendre à programmer avec Python » écrit par Gérard Swinnen, offre également une version librement redistribuable en téléchargement et un recueil de liens utiles. [!]
Sweet - Groupe de travail de programmation. [!]
VPython - Fournit une référence à cette version du langage couplée d'un module graphique 3D.


Informatique bis






PC-Informatique - Forum de dépannage PC, aide et formation informatique pour Windows et Linux.

-- http://pc-informatique.net World: Français: Informatique: Discussions ()
Sécurité informatique - Portail gouvernemental sur la sécurité informatique, donne accès à des informations.

-- http://www.securite-informatique.gouv.fr/ World: Français: Informatique: Sécurité (35)
Sippac Informatique - Prestataire de services en informatique industrielle et bureautique, situé à Chantenay-Villedieu dans la Sarthe.

-- http://sippac.informatique.free.fr World: Français: Informatique: Commerce et économie: Industrie ()
World-informatique - Aide et formation informatique : assistance, explications, et astuces sur le hardware, Windows, Internet. Également des forums.

-- http://www.world-informatique.com/ World: Français: Informatique: Formation (41)
Smiley Informatique - Vente en ligne de composants informatiques et configurations complètes.

-- http://www.smiley-informatique.com/ World: Français: Boutiques en ligne: Informatique (33)
VIP Informatique - Vente de matériel informatique en ligne.

-- http://www.vip-informatique.com World: Français: Boutiques en ligne: Informatique (33)
Alphaquark informatique - Cours, trucs et astuces, sur Excel, Word, Windows 95 et la base de registre, le langage HTML.

-- http://www.alphaquark.com/Informatique/Informatique.htm World: Français: Informatique: Formation (41)
Vulgarisation informatique - Présente des cours, tutoriels et actualités. Assistance informatique, FAQ et forum.

-- http://www.vulgarisation-informatique.com/ World: Français: Informatique: Formation (41)
Baudelet - Portail informatique et voyage. Actualités et dossiers informatifs.

-- http://www.baudelet.net/ World: Français: Informatique: Internet: Portails ()
Forum - HardWare.fr - Forums de discussions informatiques autour du hardware.


-- http://forum.hardware.fr/ World: Français: Informatique: Discussions ()
Top virus - Virus informatique et technologies antivirales.



-- http://www.topvirus.com/ World: Français: Informatique: Sécurité: Antivirus ()
Lesvirus.com - Historique et fonctionnement des virus informatiques.

-- http://users.telenet.be/martin.melchior/ World: Français: Informatique: Sécurité: Antivirus ()
Coromputer - Exploits et advisories sur la sécurité informatique.

-- http://www.coromputer.net/ World: Français: Informatique: Sécurité: Underground ()
CollabSys - Propose la mise en oeuvre de solutions informatiques collaboratives.

-- http://www.collabsys.ma World: Français: Informatique: Logiciels: Groupware ()
Airtria - Solutions de gestion pour les réseaux informatiques.

-- http://www.airtria.fr/ World: Français: Informatique: Logiciels: Exploitation: Réseaux ()
QuelSoft - Annuaire de logiciels, progiciels et solutions informatiques professionnelles.

-- http://www.quelsoft.com/ World: Français: Informatique: Logiciels: Répertoires ()
Lirmm - Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier.

-- http://www.lirmm.fr/ World: Français: Informatique: Robotique ()
Le dico du Web - Un dictionnaire de termes informatiques et d'Internet.

-- http://www.olecorre.com World: Français: Informatique: Terminologie ()
Smaky.ch - Une histoire de l'informatique en Suisse.

-- http://www.smaky.ch/ World: Français: Informatique: Histoire ()
Histoire de l'informatique - Une histoire de l'informatique consultable de façon chronologique ou thématique.

-- http://histoire.info.online.fr/ Kids and Teens: International: Français: Informatique ()

Adresse IP -



Adresse IP - Permet de trouver instantanément l'adresse IP de l'utilisateur. [!]
Ali Baba gratuit - Services gratuits pour email, webmaster et échange de bannières. [!]

BPath - Propose divers outils pour Webmasters. Echange de bannières, services en ligne. [!]

C'amusant - Liens vers des sites dans le domaine des jeux, cybercartes, outils web, généalogie, webcams, musique ainsi qu'une galerie de photos. [!]
Cgratuit - Divers services et ressources pour internet (hébergeur, mordorons, mail, statistiques, ...). [!]

Convertisseur PDF en ligne - Convertit divers types de documents (Office, OpenOffice, StarOffice, PostScript ou images) au format PDF gratuitement et sans installation. [!]
Drop Zone City - Boîte à outils Web et actualité du monde de l'Internet. [!]
Fixday - Service gratuit pour créer et gérer un agenda en ligne. [!]
Gratimail - Service gratuit et personnalisé par mail d'envoi de supports multimédias. [!]
MyNetMemo - Gestionnaire gratuit de données privées et personnelles : favoris, annuaire,

bloc-notes, messagerie, rappel d'événements et disque dur virtuel. Données accessibles via le Web, le WapP, en SMS. [!]
Online masters - Fonds d'écrans de stars et affiches de films. Astuces informatique, jeux vidéos et blagues.

Informatique dmoz




Mot de passe du compte Microsoft incorrect après la mise à jour vers Windows 10
10.12.2015 Écrit dans Informatique | Pas de commentaires »
Grâce à la mise à jour gratuite vers Windows 10, un grand nombre d’utilisateurs de Windows 8 et Windows 7 passent à Windows 10 afin de profiter de ses nouvelles fonctionnalités. Ce dernier système d’exploitation de Microsoft supporte également la connexion au système d’exploitation avec le compte Microsoft. Le compte Microsoft est un compte d’utilisateur […]
Les tablettes tactiles, fruit de l’innovation technologique
04.12.2015 Écrit dans Informatique | Pas de commentaires »
Les tablettes tactiles fruits des innovations technologiques Les tablettes tactiles qui inondent le marché des technologies sont utilisées aussi bien par les professionnels de tous secteurs que les étudiants et même les enfants. Ces produits peuvent être qualifiés d’innovation technologique majeure. En effet, les tablettes tactiles qui sont sensibles au touché de la main offrent […]
Infogérance ou maintenance informatique…quel choix et pourquoi?
03.12.2015 Écrit dans Informatique | Pas de commentaires »
Les progrès, les évolutions incessantes des nouvelles technologies et de l’informatique amènent les entreprises à revoir constamment leur politique informatique. Mon expérience de 15 ans de consulting auprès des grandes entreprises m’ont permis d’identifier des pratiques, des approches pour certaines similaires et, pour beaucoup d’autres à certains moments diamétralement opposées. L’article que je vais vous […]
Les dangers d’une sécurité informatique insuffisante… mis en exergue
19.11.2015 Écrit dans Informatique | Commentaires fermés sur Les dangers d’une sécurité informatique insuffisante… mis en exergue
L’objectif principal de cet article est de vous montrer au travers de mon fil conducteur, l’importance qu’il y a d’avoir une vraie réflexion sur la bonne définition d’une politique informatique et plus particulièrement une politique informatique accès sur la sécurité réseau. Dans le cas contraire cela amène à des failles plus ou moins importantes . Les […]
Pourquoi utiliser un logiciel de CRM en ligne ?
05.11.2015 Écrit dans Informatique | Commentaires fermés sur Pourquoi utiliser un logiciel de CRM en ligne ?
Bonjour et bonne année à tous les lecteurs de Dmoz, Je vais vous expliquer les avantages d’utiliser un logiciel de CRM/GRC (Gestion de la Relation Client) accessible sur internet grâce au Cloud Computing ou en mode SaaS (Software as a Service). Premièrement, l’utilisation d’un logiciel CRM pour gérer ses clients et ses actions commerciales est […]
Apple victime de son succès ? Le SAV aussi ….

21.10.2015 Écrit dans Informatique | Commentaires fermés sur Apple victime de son succès ? Le SAV aussi ….
Vous aussi vous êtes fan de la marque à la Pomme ? Vous aussi vous avez investi dans un téléphone Apple ou un ordinateur tout beau Macbook pro ? Vous vous êtes alors peut être confrontée à ce grand temple du consumérisme qu’est un Apple Store ? Une technique marketing bien rôdée Vous avez déjà certainement vu […]
Des tablettes et des jouets connectés qui bouleversent le monde de nos enfants

14.10.2015 Écrit dans Informatique | Commentaires fermés sur Des tablettes et des jouets connectés qui bouleversent le monde de nos enfants
Une tablette tactile n’est pas un dispositif réservé uniquement aux grands. Même les petits ont droit aux nouvelles technologies. La tablette tactile pour enfants est un outil technologique pédagogique et de divertissement permettant à notre progéniture de développer ces capacités intellectuelles. Avant 4 ans, puis de 4 à 6 ans ou enfin jusqu’à 12 ans, […]

Comment choisir un logiciel antivirus à télécharger sur internet ?
06.10.2015 Écrit dans Informatique | Commentaires fermés sur Comment choisir un logiciel antivirus à télécharger sur internet ?
La révolution internet n’aura pas apporté que du progrès et un accès a l’information illimité. Elle aura aussi participé à la multiplication des virus. Au sein de nos foyers, nos connections à la toile nous rendent vulnérables à toutes sortes de
logiciels malveillants qui peuvent parvenir à s’immiscer dans les failles de nos systèmes de […]
Conseils pour bien choisir son disque dur externe
30.09.2015 Écrit dans Informatique | Commentaires fermés sur Conseils pour bien choisir son disque dur externe

Aujourd’hui, il existe un grand nombre de disques durs externes sur le marché avec des capacités de stockage diverses pour des usages variés. Cet article a pour but de vous indiquer les différents éléments à prendre en compte dans le choix de votre disque dur externe. L’étendue de la capacité La plupart des fabricants de […]
Méthode la plus utilisée pour crypter un dossier sous Windows
10.09.2015 Écrit dans Informatique | Commentaires fermés sur Méthode la plus utilisée pour crypter un dossier sous Windows
Lorsque vous créez des documents de travail, prenez des photos pendant les vacances ou
téléchargez des films, vous enregistrez probablement beaucoup de fichiers sur votre ordinateur. Parmi ces fichiers, il y a certainement des fichiers sensibles auxquels vous désirez refuser les privilèges des utilisateurs. Pour le faire, vous pouvez protéger avec un mot de passe […]

exemples re



ation » Le standard de Python Library » 7. Chaîne services »
. 7.2 re - opérations d'expression régulières
Ce module fournit expression régulière des opérations similaires à ceux trouvés dans Perl correspondant. Les deux modèles et les chaînes à rechercher peuvent être des chaînes Unicode ainsi que des chaînes de 8 bits.

Les expressions régulières utilisent la barre oblique inverse '\' pour indiquer les formes spéciales ou pour permettre à des caractères spéciaux pour être utilisés sans invoquer leur signification spéciale. Cette collision avec l'utilisation de Python de même nature dans le même but dans les littéraux de chaîne; par exemple, pour correspondre à une barre oblique inverse littérale, on peut avoir à écrire '\\\\' que la chaîne de modèle, parce que l'expression régulière doit être \\ et chaque barre oblique inverse doit être exprimé en \\ l'intérieur d'une chaîne de Python régulière littérale.

La solution est d'utiliser la notation chaîne brute de Python pour modèles d'expressions régulières; obliques sont pas traitées d'une manière particulière dans une chaîne littérale avec le préfixe 'r' Donc r"\n" est une chaîne de deux caractères contenant '\' et 'n' tandis que "\n" est une chaîne à un caractère contenant un saut de ligne. Habituellement, les modèles seront exprimés en code Python en utilisant cette notation de chaîne brute.

Il est important de noter que la plupart des opérations régulières d'expression sont disponibles que des fonctions de niveau module et RegexObject méthodes. Les fonctions sont des raccourcis qui ne vous obligent pas à compiler un objet regex premier, mais manquent certains paramètres de réglage fin.

7.2.1. Regular Expression Syntaxe
Une expression régulière (ou RE) spécifie un ensemble de chaînes qui lui correspond; les fonctions de ce module vous permettent de vérifier si une chaîne particulière correspond à une expression régulière donnée (ou si une expression régulière donnée correspond à une chaîne particulière, ce qui revient à la même chose).

Les expressions régulières peuvent être enchaînés pour former de nouvelles expressions régulières; si A et B sont les deux expressions régulières, alors AB est également une expression régulière. En général, si une chaîne p correspond à A et une autre chaîne q correspond B, le PQ de chaîne correspondra AB. Cela vaut moins que A ou B contiennent des opérations de faible priorité; conditions aux limites entre A et B; ou ont numérotée références du groupe. Ainsi, les expressions complexes peuvent être facilement construits à partir d'expressions primitives simples comme celles décrites ici. Pour plus de détails de la théorie et la mise en oeuvre des expressions régulières, consultez le livre Friedl référencé ci-dessus, ou presque tout manuel sur la construction de compilateur.

Une brève explication du format des expressions régulières suit. Pour de plus amples informations et une présentation plus douce, consulter le Expression HOWTO régulier.

Les expressions régulières peuvent contenir des caractères à la fois spéciales et ordinaires. La plupart des caractères ordinaires, comme 'A' 'a' ou '0' sont les plus simples expressions régulières; ils correspondent tout simplement eux-mêmes. Vous pouvez concaténer des caractères ordinaires, de sorte que last correspond à la chaîne 'last' (Dans le reste de cette section, nous écrirons de RE dans this special style généralement sans les guillemets, et les chaînes à être appariés 'in single quotes'

Certains personnages, comme '|' ou '(' sont spéciaux Les caractères spéciaux soit debout pour les classes de personnages ordinaires, ou affectent la façon dont les expressions régulières autour d'eux sont interprétés régulières chaînes de modèle d'expression ne peuvent pas contenir des octets nuls, mais peuvent spécifier le.. octet nul en utilisant le \number notation, par exemple, '\x00'

Les caractères spéciaux sont:

'.'
(Dot). Dans le mode par défaut, cela correspond à tout caractère sauf un saut de ligne. Si le DOTALL drapeau a été spécifié, cela correspond à tout caractère compris un saut de ligne.
'^'
(Caret.) Correspond au début de la chaîne, et MULTILINE le mode correspond également immédiatement après chaque saut de ligne.
'$'
Correspond à la fin de la chaîne ou juste avant le saut de ligne à la fin de la chaîne, et MULTILINE le mode correspond également à un saut de ligne. foo correspond à la fois «foo» et «machin», tandis que l'expression régulière foo$ correspond seulement 'foo' . Plus intéressant, la recherche de foo.$ Dans 'foo1\nfoo2\n' matchs de la foo2 «normalement, mais 'foo1' dans MULTILINE le mode; la recherche d'un simple $ en 'foo\n' va trouver deux matchs (vide): l'un juste avant le saut de ligne, et un à la fin de la chaîne.
'*'
Fait correspondre la RE résultante à 0 ou plusieurs répétitions de la RE précédente, autant de répétitions que sont possibles. ab* correspondra à 'a', 'ab', ou 'a' suivi par un certain nombre de 'B.
'+'
Causes de la RE résultante à 1 ou plusieurs répétitions de la RE précédente. ab+ correspondra à 'a' suivi par un non-zéro nombre de 'B; il ne correspondra pas simplement 'a'.
'?'
Causes de la RE résultante à 0 ou 1 répétitions de la RE précédente. ab? Correspondra soit 'A' ou 'ab'.
*? +? ??
Les '*' '+' et '?' Qualificatifs sont tous avides; ils correspondent à autant de texte que possible. Parfois, ce comportement est indésirable; si le RE <.*> est comparée à '

title

' il correspondra à la chaîne entière, et pas '

' Ajout de '?' Après la qualification rend effectuer le match de façon non-gourmand ou minime; que quelques caractères que possible seront jumelés. .*? Dans l'expression précédente correspondra seulement '

'
{m}
Indique que exactement m copies de la RE précédente doivent être adaptées; moins de matches provoquent l'ensemble RE pas correspondre. Par exemple, a{6} correspondra exactement à six 'a' caractères, mais pas cinq.
{m, n}
Fait correspondre la RE résultante à de m à n répétitions de la RE précédente, en essayant de faire correspondre autant de répétitions que possible. Par exemple, a{3,5} correspondra 3-5 'a' caractères. Omettre m spécifie une limite inférieure de zéro, et en omettant n spécifie une limite supérieure infinie. A titre d'exemple, a{4,}b correspondra aaaab ou mille 'a' caractères suivis par un b mais pas aaab La virgule ne peut être omise ou le modificateur serait confondu avec la forme décrite précédemment.
{m, n}?
Fait correspondre la RE résultante à de m à n répétitions de la RE précédente, en essayant de faire correspondre autant que possible quelques répétitions. Ceci est la version non gourmande de la qualification précédente. Par exemple, sur la 6-chaîne de caractères 'aaaaaa' a{3,5} correspondra 5 'a' caractères, tandis que a{3,5}? Ne correspondra 3 caractères.
'\'
Soit Protège les caractères spéciaux (permettant de faire correspondre des personnages comme '*' '?' Etc.), ou des signaux d'une séquence spéciale; séquences spécifiques sont discutés ci-dessous.

Si vous n'êtes pas en utilisant une chaîne brute d'exprimer le motif, rappelez-vous que Python utilise également la barre oblique inverse comme une séquence d'échappement dans des chaînes; si la séquence d'échappement est pas reconnu par l'analyseur de Python, la barre oblique inverse et le caractère ultérieurs sont inclus dans la chaîne résultante. Toutefois, si Python serait reconnaître la séquence résultante, la barre oblique inverse doit être répété deux fois. Ceci est compliqué et difficile à comprendre, il est fortement recommandé que vous utilisez des chaînes brutes pour tous, mais les expressions les plus simples.

[]
Utilisé pour indiquer un ensemble de caractères. Dans un ensemble:

Les caractères peuvent être répertoriés individuellement, par exemple [amk] correspondra à 'a' 'm' ou 'k'
Plages de caractères peuvent être indiquées en donnant deux personnages et en les séparant par un '-' par exemple [az] correspondra toute lettre ASCII minuscule, [0-5][0-9] correspond à tous les nombres à deux chiffres à partir de 00 à 59 et [0-9A-Fa-f] correspond à tout chiffre hexadécimal. Si - est échappé (par exemple [a\-z] ou si il est placé comme le premier ou le dernier caractère (par exemple [a-] il correspondra à un littéral '-'
Les caractères spéciaux perdent leur signification spéciale à l'intérieur des ensembles. Par exemple, [(+*)] va correspondre à l'un des caractères littérales '(' '+' '*' ou ')'
Les classes de caractères tels que \w ou \S (défini ci-dessous) sont également acceptés à l'intérieur d'un ensemble, bien que les personnages qu'ils correspondent dépend de si LOCALE ou UNICODE mode est en vigueur.
Caractères qui ne sont pas dans une plage peuvent être jumelés en complétant l'ensemble. Si le premier caractère de l'ensemble est '^' tous les caractères qui ne sont pas dans le jeu seront jumelés. Par exemple, [^5] correspond à tout caractère sauf '5' et [^^] correspond à tout caractère sauf '^' ^ N'a pas de signification particulière si elle est pas le premier caractère de l'ensemble.
Pour correspondre à un littéral ']' l'intérieur d'un ensemble, précéder d'une barre oblique inverse, ou le placer au début du jeu. Par exemple, à la fois [()[\]{}] et []()[{}] permettra à la fois correspondre à une parenthèse.
'|'
A|B où A et B peut être ER arbitraires, crée une expression régulière qui correspondent à A ou B. Un nombre arbitraire de RE peuvent être séparés par le '|' de cette façon. Ceci peut être utilisé à l'intérieur des groupes (voir ci-dessous) ainsi. Comme la chaîne cible est balayée, ER séparées par '|' sont jugés de gauche à droite. Quand un motif correspond complètement, cette branche est acceptée. Cela signifie qu'une fois A correspond, B ne sera pas testé plus loin, même si elle produirait un match plus globale. En d'autres termes, le '|' opérateur est jamais avide. Pour correspondre à un littéral '|' utilisez \| ou de l'enfermer dans une classe de caractère, comme dans [|]
(...)
Correspond à toute expression régulière est à l'intérieur des parenthèses, et indique le début et la fin d'un groupe; le contenu d'un groupe peuvent être récupérés après un match a été effectuée, et peuvent être adaptés plus tard dans la chaîne avec le \number séquence spéciale, décrit ci-dessous. Pour faire correspondre les littéraux '(' ou ')' l'utilisation \( \) ou mettez-les dans une classe de caractères: [(] [)]
(? ...)
Ceci est une notation d'extension (un '?' Après un '(' est non significatif autrement) Le premier caractère après le. '?' Détermine quelle est la signification et à la suite syntaxe de la construction est Extensions général ne créent pas un nouveau groupe. (?P...) est la seule exception à cette règle. Après les extensions sont actuellement pris en charge.
(? iLmsux)
(Une ou plusieurs lettres de l'ensemble 'i' 'L' 'm' 's' 'u' 'x' Le groupe correspond à la chaîne vide; les lettres fixent les drapeaux correspondants: re.I (ignorer la casse), re.L (selon les locales), re.M (multi-ligne), re.S (point correspond à tous), re.U (dépendante Unicode), et re.X (verbeux), pour la totalité de l'expression régulière. (Les drapeaux sont décrits dans matières Module.) Ceci est utile si vous souhaitez inclure les drapeaux dans le cadre de l'expression régulière, au lieu de passer un argument de drapeau pour la re.compile() de fonction.

Notez que les (?x) des changements de pavillon comment l'expression est analysée. Il devrait être utilisé en premier dans la chaîne d'expression, ou après un ou plusieurs caractères d'espacement. Si il ya des caractères non-espace avant le drapeau, les résultats sont indéfinis.

(?: ...)
Version de parenthèses réguliers Un non-capture. Correspond à toute expression régulière est à l'intérieur des parenthèses, mais la chaîne correspondante par le groupe ne peuvent pas être récupérés après l'exécution d'un match ou référencés plus tard dans le modèle.
(? P ...)
Similaire à parenthèses réguliers, mais la chaîne correspondante par le groupe est accessible via le nom symbolique de nom de groupe. Les noms de groupe doivent être des identifiants Python valides, et chaque nom de groupe doit être défini qu'une seule fois dans une expression régulière. Un groupe symbolique est aussi un groupe numéroté, comme si le groupe n'a pas été nommé.

Les groupes nommés peuvent être référencées dans trois contextes. Si le motif est (?P['"]).*?(?P=quote) (C.-à-correspondant d'une chaîne entourée de guillemets simples ou doubles):

Contexte de référence au groupe "citation" Façons de référencer
dans le même motif lui-même
(?P=quote) (comme indiqué)
\1
lors du traitement de correspondance objet m
m.group ('quote')
m.end('quote') (etc.)
dans une chaîne passée à la repl argument re.sub()
\ g
\ g <1>
\1
(? P = name)
Une référence arrière à un groupe nommé; elle correspond à ce que le texte a été adapté par le groupe nommé nom plus tôt.
(? # ...)
Un commentaire; le contenu des parenthèses sont tout simplement ignorés.
(? = ...)
Matches si ... Matches à venir, mais ne consomme pas de la chaîne. Ceci est appelé une assertion avant. Par exemple, Isaac (?=Asimov) correspondra 'Isaac ' que si elle est suivie par 'Asimov'
(?! ...)
Correspond si ... ne correspond pas à côté. Cette anticipation est une assertion négative. Par exemple, Isaac (?!Asimov) correspondra 'Isaac ' que si elle est pas suivie par 'Asimov'
(? <= ...) Matches si la position actuelle dans la chaîne est précédée d'un match pour ... qui se termine à la position actuelle. Ceci est appelé assertions arrières positive. (?<=abc)def trouveront une correspondance dans abcdef depuis le lookbehind va sauvegarder 3 caractères et de vérifier si le motif contenu correspond. Le motif contenu doit seul match cordes d'une certaine longueur fixe, ce qui signifie que abc ou a|b sont autorisés, mais a* et a{3,4} ne sont pas. Références de groupe ne sont pas pris en charge, même si elles correspondent à cordes d'une certaine longueur fixe. Notez que les modèles qui commencent par les assertions de lookbehind positifs ne correspondent pas au début de la chaîne recherchée; vous voudrez plus susceptibles d'utiliser la search() la fonction plutôt que le match() fonction: >>> Import re
>>> M = re. Recherche ('(? <= Abc) def', 'abcdef') >>> Groupe m. (0)
'def'
Cet exemple cherche un mot suivant un trait d'union:

>>> M = re recherche ('(<= -?) \ W +', 'spam œuf »). >>> Groupe m. (0)
'œuf'
(? ) Est un motif email correspondant pauvres, qui va correspondre avec '' ainsi que 'user@host.com' mais pas avec '>> Re. Split ('\ W + »,« Des mots, des mots, des mots.')
[«Mots», «mots», «Les mots ',' ']
>>> Re. Split ('(\ W +) »,« Des mots, des mots, des mots.')
['Words', ',', 'mots', ',', 'mots', '.', '']
>>> Re. Split ('\ W + »,« mots, des mots, des mots.', 1)
[«Mots», «des mots, des paroles.]
>>> Re. Split ('[af] +', '0a3B9', drapeaux = re. IGNORECASE)
[«0», «3», «9»]
Si il ya des groupes de capture dans le séparateur et il correspond au début de la chaîne, le résultat va commencer avec une chaîne vide. La même chose vaut pour la fin de la chaîne:

>>> Re. Split ('(\ W +) »,« ... des mots, des mots ... »)
['', '...', 'Mots', ',', 'mots', '...', '']
De cette façon, les composants de séparation se trouvent toujours dans les mêmes indices relatifs au sein de la liste des résultats (par exemple, si il ya un groupe de capture dans le séparateur, l'0th, le 2ème et ainsi de suite).

Notez que scission ne sera jamais découper une chaîne sur un schéma allumettes vide. Par exemple:

>>> Re. Split ('x *', 'foo')
['foo']
>>> Re. Split ("(? M) ^ $", "foo \ n \ n bar \ n")
['foo \ n \ nbar \ n']
Changé dans la version 2.7: Ajout de la optionnelle argument flags.

re. findall (motif, chaîne, drapeaux = 0)
Retour tous les matchs non-chevauchement de modèle dans la chaîne, comme une liste de chaînes. La chaîne est lue de gauche à droite, et les matchs sont retournés dans l'ordre trouvé. Si un ou plusieurs groupes sont présents dans le modèle, retourner une liste de groupes; ce sera une liste de tuples si le modèle a plus d'un groupe. Matchs vides sont inclus dans le résultat à moins qu'ils ne touchent le début de un autre match.

Nouveau dans la version 1.5.2.

Changé dans la version 2.4: Ajout de la optionnelle argument flags.

re. finditer (motif, chaîne, drapeaux = 0)
Retourne un itérateur cédant MatchObject cas sur toutes les correspondances qui ne se chevauchent pour le modèle de RE dans la chaîne. La chaîne est lue de gauche à droite, et les matchs sont retournés dans l'ordre trouvé. Matchs vides sont inclus dans le résultat à moins qu'ils ne touchent le début de un autre match.

Nouveau dans la version 2.2.

Changé dans la version 2.4: Ajout de la optionnelle argument flags.

re. sub (motif, repl, string, count = 0, drapeaux = 0)
Retourner la chaîne obtenue en remplaçant les plus à gauche occurrences non-chevauchement de modèle dans la chaîne par le rempl de remplacement. Si le modèle est introuvable, chaîne est retournée inchangée repl peut être une chaîne ou une fonction. si elle est une chaîne, toute barre oblique inverse échappe en elle sont traitées. Autrement dit, \n est converti en un caractère de nouvelle ligne unique, \r est converti en un retour chariot, et ainsi de suite. Évasions inconnus tels que \j sont laissés seuls. Les références arrières, comme \6 sont remplacées par la chaîne correspondante par le groupe 6 dans le motif. Par exemple:

. >>> Re sous (r'def \ s + ([a-zA-Z _] [a-zA-Z_0-9] *) \ S * \ (\ s * \): ',
... R'static PyObject * \ npy_ \ 1 (void) \ n {',
... 'Def myfunc ():')
'PyObject statique * \ npy_myfunc (void) \ n {'
Si rempl est une fonction, il est appelé pour chaque événement non-chevauchement de motif. La fonction prend un seul argument de match objet et renvoie la chaîne de remplacement. Par exemple:

>>> Def dashrepl (matchobj):
. ... Si matchobj groupe (0) == '-': retour ''
... Else: return '-'
. >>> Re sous ('- {1,2} ", dashrepl,' pro-gramme ---- fichiers ')
'fichiers de programme'
>>> Re. Sous (r '\ sable \' s, '&', 'fèves au lard et Spam ", drapeaux = re. IGNORECASE)
«Fèves au lard et Spam"
Le motif peut être une chaîne ou un objet de RE.

Le nombre de argument optionnel est le nombre maximum d'occurrences de modèle pour être remplacés; nombre doit être un entier non négatif. Si elle est omise ou zéro, toutes les occurrences seront remplacés. Matchs vides pour le motif sont remplacées que lorsqu'elles ne sont pas à côté d'un match précédent, donc sub('x*', '-', 'abc') retourne '-abc-'

Dans arguments de REPL-type de chaîne, en plus des évasions de caractères et des références arrières décrites ci-dessus, \g va utiliser la chaîne correspondante par le groupe nommé name tel que défini par le (?P...) syntaxe. \g utilise le numéro de groupe correspondant; \g<2> est donc équivalent à \2 mais est pas ambigu dans un remplacement tels que \g<2>0 \20 serait interprété comme un renvoi au groupe 20, pas un renvoi au groupe 2, suivi par le caractère littéral '0' La référence arrière \g<0> substituts dans l'ensemble du sous-chaîne correspondante par le RE.

Changé dans la version 2.7: Ajout de la optionnelle argument flags.

re. subn (modèle, repl, string, count = 0, drapeaux = 0)
Effectuez la même opération que sub() mais renvoie un tuple (new_string, number_of_subs_made)

Changé dans la version 2.7: Ajout de la optionnelle argument flags.

re. escape (string)
Chaîne de retour avec tous les non-alphanumériques backslashées; ce qui est utile si vous voulez faire correspondre une chaîne littérale arbitraire qui peut avoir métacaractères d'expressions régulières en elle.

re. purge ()
Vider le cache d'expression régulière.

exception re. error
Exception déclenchée quand une chaîne passée à l'une des fonctions est pas ici une expression régulière valide (par exemple, il peut contenir des parenthèses inégalées) ou quand une autre erreur se produit lors de la compilation ou de correspondance. Il est jamais une erreur si une chaîne contient pas de match pour un motif.

7.2.3. Expression régulière Objets
classe re. RegexObject
Le RegexObject classe prend en charge les méthodes et les attributs suivants:

search (string [, pos [, endpos]])
Parcourez chaîne à la recherche d'un endroit où cette expression régulière produit un match, et ​​retourner un correspondant MatchObject exemple. Retour None si aucune position dans la chaîne correspond au motif; Notez que ceci est différent de trouver un match de longueur nulle à un certain point dans la chaîne.

Le second paramètre optionnel pos donne un index dans la chaîne où la recherche est de commencer; il est par défaut à 0 Cela ne veut pas complètement équivalent à trancher la chaîne; le '^' caractère de modèle correspond à la véritable début de la chaîne et à des positions juste après un saut de ligne, mais pas nécessairement à l'index où la recherche est de commencer.

Les endpos paramètre optionnel limites jusqu'où la chaîne sera recherché; ce sera comme si la chaîne est endpos caractères, de sorte que seuls les personnages de pos à endpos - 1 seront recherchés pour un match. Si endpos est inférieure à pos, aucun match sera trouvée, sinon, si rx est un objet d'expression régulière compilée, rx.search(string, 0, 50) est équivalent à rx.search(string[:50], 0)

>>> Pattern = re. Compiler («D»)
>>> Motif. Recherche ("chien") # match à l'index 0
<_sre.SRE_Match objet à ...>
. >>> Motif de recherche ("chien", 1) # Pas de correspondance; la recherche ne comprend pas le "d"
match (string [, pos [, endpos]])
Si zéro ou plusieurs caractères au début de la chaîne correspondent à cette expression régulière, renvoyer un correspondant MatchObject exemple. Retour None si la chaîne ne correspond pas au modèle; Notez que ceci est différent d'un match de longueur nulle.

Les paramètres de POS et endpos optionnels ont la même signification que pour la search() méthode.

>>> Pattern = re. Compiler ("o")
>>> Motif. Correspondance ("chien") # Pas de correspondance comme "o" est pas au début de "chien".
>>> Motif. Correspondance ("chien", 1) # match "o" est le 2ème caractère de "chien".
<_sre.SRE_Match objet à ...>
Si vous souhaitez localiser un match n'importe où dans la chaîne, utilisez search() à la place (voir aussi la recherche () vs match ()).

split (string, maxsplit = 0)
Identique à la split() la fonction, en utilisant la forme compilée.

findall (string [, pos [, endpos]])
Similaires à findall() la fonction, en utilisant le motif compilé, mais accepte également pos et endpos option des paramètres qui limitent la région de recherche comme pour match()

finditer (string [, pos [, endpos]])
Similaires à finditer() la fonction, en utilisant le motif compilé, mais accepte également pos et endpos option des paramètres qui limitent la région de recherche comme pour match()

sub (repl, string, count = 0)
Identique à la sub() la fonction, en utilisant la forme compilée.

subn (repl, string, count = 0)
Identique à la subn() la fonction, en utilisant la forme compilée.

flags
Les drapeaux regex correspondants. Ceci est une combinaison des drapeaux donnés à compile() et toute (?...) Drapeaux de ligne dans le motif.

groups
Le nombre de groupes de capture dans le motif.

groupindex
Une cartographie dictionnaire des noms de groupe symboliques définies par (?P) pour les numéros de groupe. Le dictionnaire est vide si aucun des groupes symboliques ont été utilisés dans le modèle.

pattern
La chaîne de modèle à partir de laquelle l'objet de RE a été compilé.

7.2.4. Correspondre objets
classe re. MatchObject
Objets de match ont toujours une valeur booléenne True Depuis match() et search() retourner None quand il n'y a pas de match, vous pouvez tester si il y avait un match avec un if la déclaration:

match = re. search (pattern, string)
si MATCH:
processus (jeu)
Objets Match soutiennent les méthodes et les attributs suivants:

expand (modèle)
Retourner la chaîne obtenue en faisant la substitution barre oblique inverse sur le modèle de chaîne de modèle, comme cela se fait par le sub() méthode.Escapes tels que \ n sont convertis aux caractères appropriés, et des références arrières numériques (\ 1, \ 2) et des références arrières nommées (\ g <1>, \ g ) sont remplacés par le contenu du groupe correspondant.

groupe ([groupe1, ...])
Retourne un ou plusieurs sous-groupes du match. Si il ya un seul argument, le résultat est une chaîne unique; si il ya plusieurs arguments, le résultat est un tuple avec un élément par argument. Sans arguments, group1 zéro par défaut (l'ensemble du match est retournée). Si un groupeN argument est nul, la valeur de retour correspondante est la chaîne entière de correspondance; si elle est dans la gamme inclusive [1..99], il est la chaîne correspondant le groupe entre parenthèses correspondant. Si un numéro de groupe est négatif ou plus grand que le nombre de groupes définis dans le modèle, un IndexError exception est levée. Si un groupe est contenue dans une partie du motif qui ne correspond pas, le résultat correspondant est Aucun. Si un groupe est contenue dans une partie du motif qui correspondent à plusieurs reprises, le dernier match est retourné.

>>> M = re. Correspondance (r "(\ w +) (\ w +)", "Isaac Newton, physicien")
>>> m. Groupe (0) # tout le match
"Isaac Newton"
>>> m. groupe (1) # Le premier sous-groupe entre parenthèses.
"Isaac"
>>> m. groupe (2) # Le deuxième sous-groupe entre parenthèses.
"Newton"
>>> m. groupe (1, 2) # Plusieurs arguments nous donner un tuple.
('Isaac Newton')
Si l'expression régulière utilise le (? P ...) syntaxe, les GROUPEN arguments peuvent également être des chaînes d'identification des groupes par leur nom de groupe. Si un argument de chaîne ne soit pas utilisé comme un nom de groupe dans le modèle, un IndexError exception est levée.

Un exemple modérément compliquée:

>>> M = re. Correspondance (r "(? P \ w +) (? P \ w +)", "Malcolm Reynolds")
>>> m. Groupe ('prenom')
'Malcolm'
>>> m. groupe ('nom')
'Reynolds'
Les groupes nommés peuvent également être désignés par leur index:

>>> M. Groupe (1)
'Malcolm'
>>> m. Groupe (2)
«Reynolds»
Si un groupe correspond à plusieurs fois, seul le dernier match est accessible:

>>> M = re. Correspondance (r "(..) +", "a1b2c3") # Matchs 3 fois.
>>> M. Groupe (1) # Renvoie uniquement le dernier match.
'C3'
groupes ([défaut])
Retourne un tuple contenant tous les sous-groupes du match, à partir de 1 jusqu'à cependant de nombreux groupes sont dans le motif. Le défaut argument est utilisé pour les groupes qui ne participent pas dans le match; il est par défaut Aucun. (Incompatibilité Note:. Dans le Python 1.5 version d'origine, si le tuple était un élément de long, une chaîne serait renvoyé à la place Dans les versions ultérieures (de 1.5.1 sur), un tuple singleton est retourné dans de tels cas.)

Par exemple:

>>> M = re. Correspondance (r "(\ d +) \. (\ D +)", "24,1632")
>>> m. Groupes ()
('24', '1632')
Si nous faisons la décimale et tout ce qui suit option, tous les groupes ne pourrait participer au match. Ces groupes seront par défaut Aucun, sauf si le défaut argument est donné:

>>> M = re. Correspondance (r "(\ d +) \.? (\ D +)?", "24")
>>> m. Groupes () # Deuxième défaut de groupe à aucun.
('24', None )
>>> m. groupes ('0') # Maintenant, les deuxièmes de groupe par défaut à '0'.
('24', '0')
groupdict ([défaut])
Retourner un dictionnaire contenant tous les nommés sous-groupes du match, indexés par le nom du sous-groupe. Le défaut argument est utilisé pour les groupes qui ne participent pas dans le match; il est par défaut Aucun. Par exemple:

>>> M = re. Correspondance (r "(P \ w +) (P \ w +)?", "Malcolm Reynolds")
>>> m. Groupdict ()
{'prenom': ' Malcolm ',' nom ':' Reynolds '}
commencer ([groupe])
fin ([groupe])
Retourner les indices de début et de fin de la chaîne correspondante par groupe; groupe par défaut à zéro (ce ​​qui signifie toute chaîne correspondante). Retour -1 si le groupe existe, mais ne contribue pas à la rencontre. Pour un objet de correspondance m, et un groupe g qui ne contribuent à la correspondance, la chaîne correspondante par le groupe g (équivalent à m.group (g)) est

m. chaîne [m. démarrer (g): m. fin (g)]
Notez que m.start (groupe) sera égal m.end (groupe) si le groupe correspond une chaîne nulle. Par exemple, après m = re.search ('b (c?)', 'ABC'), m.start (0) est 1, m.end (0) est 2, m.start (1) et m. fin (1) sont à la fois 2 et m.start (2) soulève une IndexError exception.

Un exemple qui va enlever remove_this d'adresses e-mail:

>>> email = "tony@tiremove_thisger.net"
>>> m = re . search ( "remove_this" , email )
>>> email [: m . start ()] + email [ m . end ():]
'tony@tiger.net'
durée ([groupe])
Pour MatchObject m, retourner le 2-tuple (m.start (groupe), m.end (groupe)). Notez que si le groupe n'a pas contribué à le match, cela est (-1, -1). Groupes par défaut à zéro, tout le match.

pos
La valeur de pos qui a été transmis à la recherche () ou match () méthode de la RegexObject. Ceci est l'index dans la chaîne à laquelle le moteur de RE a commencé à chercher un match.

endpos
La valeur de endpos qui a été transmis à la recherche () ou match () méthode de la RegexObject. Ceci est l'indice dans la chaîne au-delà duquel le moteur de RE ne va pas.

lastIndex
L'indice entier de capturer le dernier groupe apparié, ou None si aucun groupe a été apparié à tous. Par exemple, les expressions (a) b, ((a) (b)) et ((ab)) aura == lastIndex 1 si elle est appliquée à la chaîne 'ab', tandis que l'expression (a) (b) sera avoir == lastIndex 2, si elle est appliquée à la même chaîne.

lastgroup
Le nom du dernier groupe capture adapté, ou None si le groupe ne disposent pas d'un nom, ou si aucun groupe a été appariés à tous.

re
L'objet expression régulière dont le match () ou la recherche () méthode a produit ce MatchObject exemple.

chaîne
La chaîne passée à match () ou la recherche ().

7.2.5. Exemples
7.2.5.1. Vérification pour une paire
Dans cet exemple, nous allons utiliser la fonction d'aide suivante pour afficher correspondance des objets un peu plus de grâce:

def displaymatch (correspondance):
si correspondance est Aucun:
retour Aucun
retour ''% (correspondance. groupe (), correspondance. groupes ())
Supposons que vous écrivez un programme de poker où la main d'un joueur est représenté comme une chaîne de 5 caractères avec chaque personnage représentant une carte, "a" pour ACE, "k" pour le roi, "q" pour la reine, "j" pour Jack, "t" de 10, et "2" à "neuf" représentant la carte de cette valeur.

Pour voir si une chaîne donnée est une main valide, on peut faire ce qui suit:

>>> Valide = re. Compiler (r "^ [a2-9tjqk] {5} $")
>>> displaymatch (valide. Correspondance ("akt5q")) # valide.
"
">>> displaymatch (valide. correspondance (" akt5e ")) # valide.
>>> displaymatch (valide. correspondance (" Akt ")) # valide.
>>> displaymatch (valide. correspondance (" 727ak " )) # valide.
""
Ce dernier part, "727ak", contenait une paire ou deux cartes de la même valeur. Pour correspondre avec une expression régulière, on pourrait utiliser des références arrières en tant que tels:

>>> Paire = re. Compiler ("... * () * \ 1" r)
>>> displaymatch (paire. Correspondance ("717ak")) # Paire de 7s.
"
">>> displaymatch (paire. correspondance (" "718ak)) # Pas de paires.
>>> displaymatch (paire. correspondance (354aa" ")) # Paire
d'as." "
Pour savoir ce que la carte se compose de la paire, on pourrait utiliser le groupe () méthode de MatchObject de la manière suivante:

>>> Paire. Correspondance ("717ak"). Groupe (1)
'7'

# Erreur parce re.match () retourne None, qui ne possède pas de méthode group ():
>>> paire. Correspondance ("718ak"). Groupe (1)
Retraçage (appel plus récente en dernier):
Fichier "", ligne 1, dans
re. Correspondance ("... * () * \ 1" r, "718ak"). Groupe (1)
AttributeError: objet 'NoneType' n'a pas attribut «groupe»

>>> Paire. Correspondance ("354aa"). Groupe (1)
'a'
7.2.5.2.Simulation de scanf ()
Python n'a pas actuellement l'équivalent de scanf (). Les expressions régulières sont généralement plus puissants, mais aussi plus détaillé, que scanf () chaînes de format. Le tableau ci-dessous offre quelques applications plus ou moins équivalentes entre scanf () jetons de format et des expressions régulières.

scanf () Token Expression régulière
% c .
% 5c . {5}
%ré [- +] \ d +?
% e,% E,% f,% g [- +] (\ d + (\ \ d *) | \ \ d +.?.) ([EE] [- +] \ d +?)?
%je [- +] (0 [xx] [\ dA-Fa-de f] + | 0 [0-7] * | \ d +)?
% o ? [- +] [0-7] +
% s \ S +
% u \ d +
x%,% X ? [- +] (0 [xx]) [\ dA-Fa-f] +
Pour extraire le nom de fichier et des numéros d'une chaîne comme

/ usr / sbin / sendmail - 0 erreurs, 4 avertissements
vous devez utiliser un scanf () format comme

% s -% d erreurs,% d avertissements
L'expression régulière équivalente serait

(\ S +) - (\ d +) erreurs, (\ d +) avertissements
7.2.5.3. search () vs match ()
Python offre deux opérations primitives différentes basées sur des expressions régulières: re.match () des chèques pour un match seulement au début de la chaîne, tandis que re.search () des chèques pour un match n'importe où dans la chaîne (ce que Perl fait par défaut ).

Par exemple:

>>> Re. Correspondance ("c", "abcdef") # Pas de correspondance
>>> re. Recherche ("c", "abcdef") # Correspondance
<_sre.SRE_Match objet à ...>
Les expressions régulières commençant par '^' peuvent être utilisés avec la recherche () pour restreindre le match au début de la chaîne:

>>> Re. Correspondance ("c", "abcdef") # Pas de correspondance
>>> re. Recherche ("^ c", "abcdef") # Pas de correspondance
>>> re. Recherche («un ^", " abcdef ") # Correspondance
<_sre.SRE_Match objet à ...>
Notez cependant que dans MULTILINE mode de match () correspond seulement au début de la chaîne, tandis que l'utilisation search () avec une expression régulière commençant par '^' correspondra au début de chaque ligne.

>>> Re. Correspondance ('X', 'A \ n B \ n X', re. MULTILINE) # Pas de correspondance
>>> re. Recherche ('^ X', 'A \ n B \ n X', re. MULTILINE) # Correspondance
<_sre.SRE_Match objet à ...>
7.2.5.4.Faire un répertoire
split () divise une chaîne en une liste délimitée par le motif passé. La méthode est inestimable pour convertir des données textuelles dans les structures de données qui peuvent être facilement lus et modifiés par Python comme démontré dans l'exemple suivant qui crée un répertoire.

D'abord, voici l'entrée. Normalement, il peut provenir d'un fichier, ici nous utilisons la syntaxe triple chaîne entre guillemets:

>>> Texte = "" "Ross McFluff: 834.345.1254 155, rue Elm
...
... Ronald Heathmore: 892.345.3428 436 Finley Avenue
... Frank Burger: 925.541.7625 662 South Dogwood Way
...
...
... Heather Albrecht: 548.326.4584 919 Park Place "" "
Les entrées sont séparées par un ou plusieurs sauts de ligne. Maintenant, nous convertissons la chaîne dans une liste avec chaque ligne non vide ayant sa propre entrée:

>>> Entrées = re. Partagé ("\ n +", texte)
>>> entrées
['Ross McFluff: 834.345.1254 155, rue Elm',
'Ronald Heathmore: 892.345.3428 436 Finley Avenue',
'Frank Burger: 925.541.7625 662 South Dogwood Way
',' Heather Albrecht: 548.326.4584 919 Park Place ']
Enfin, diviser chaque entrée dans une liste avec prénom, nom, numéro de téléphone et adresse. Nous utilisons le maxsplit paramètre de split () parce que l'adresse a des espaces, notre modèle de fractionnement, en elle:

>>> [Re. Partagé (":?", Entrée, 3) pour l'entrée dans les entrées]
[['Ross', 'McFluff', '834.345.1254 »,« 155, rue Elm'],
[«Ronald», 'Heathmore', '892.345.3428 »,« 436 Finley Avenue'],
[Frank »,« Burger »,« 925.541.7625 »,« 662 South Dogwood Way '],
[' Heather ',' Albrecht ',' 548.326.4584 »,« 919 Park Place ']]
L':? Motif correspond le côlon après le dernier nom, de sorte qu'il ne se produit pas dans la liste de résultats. Avec un maxsplit de 4, nous pourrions séparer le numéro de la maison du nom de la rue:

>>> [Re. Partagé (":?", Entrée, 4) pour l'entrée dans les entrées]
[['Ross', 'McFluff', '834.345.1254 »,« 155 »,« Elm Street'],
[' Ronald ',' Heathmore ',' 892.345.3428 »,« 436 »,« Finley Avenue '],
[Frank »,« Burger »,« 925.541.7625', '662', 'South Dogwood Way'],
[ «Heather», «Albrecht», «548.326.4584 ',' 919 ',' Park Place ']]
7.2.5.5. Texte munging
sub () remplace toutes les occurrences d'un motif avec une ficelle ou le résultat d'une fonction. Cet exemple illustre l'utilisation de sub () avec une fonction de texte "munge", ou aléatoire l'ordre de tous les caractères de chaque mot d'une phrase à l'exception des premier et dernier caractères:

>>> def repl ( m ):
... inner_word = list ( m . group ( 2 ))
... random . shuffle ( inner_word )
... return m . group ( 1 ) + "" . join ( inner_word ) + m . group ( 3 )
>>> text = "Professor Abdolmalek, s'il vous plaît signaler vos absences rapidement.
">>> Re. Sous (r" (\ w) (\ w +) (\ w) ", repl, texte)
'Poefsrosr Aealmlobdk, pslaee reorpt vos abnseces plmrptoy.
>>> re. sous (r "(\ w) (\ w +) (\ w)", repl, texte)
'Pofsroser Aodlambelk, plasee reoprt yuor asnebces potlmrpy.
7.2.5.6. Trouver tous les adverbes
findall () correspond à toutes les occurrences d'un motif, et pas seulement le premier comme search () le fait. Par exemple, si l'on était un écrivain et je voulais trouver tous les adverbes dans un texte, il ou elle pourrait utiliser findall () de la manière suivante:

>>> Texte = "Il a été soigneusement déguisé mais rapidement capturé par la police."
>>> Re. Findall (r "\ w + Ly», texte)
[«attentivement», «rapidement»]
7.2.5.7. Trouver tous les adverbes et leurs positions
Si l'on veut plus d'informations sur tous les matches d'un motif que le texte correspondant, finditer () est utile car elle fournit des instances de MatchObject au lieu de chaînes. En continuant avec l'exemple précédent, si l'on était un écrivain qui voulait trouver tous les adverbes et leurs positions dans un texte, il ou elle serait utiliser finditer () de la manière suivante:

>>> Texte = "Il a été soigneusement déguisé mais rapidement capturées par


soigneusement
40-47: rapidement
7.2.5.8. Raw cordes Notation
Notation chaîne brute (r "texte") maintient les expressions régulières sain d'esprit. Sans elle, chaque barre oblique inverse ('\') dans une expression régulière devra être précédée d'une autre pour y échapper. Par exemple, les deux lignes de code suivantes sont fonctionnellement identiques:

>>> Re. Correspondance (r "\ W (.) \ 1 \ W", "ff")
<_sre.SRE_Match objet à ...>
>>> re. Correspondance ("\\ W (.) \\ 1 \\ W "," ff ")
<_sre.SRE_Match objet à ...>
Quand on veut faire correspondre une barre oblique inverse littérale, il doit être échappé dans l'expression régulière. Avec la notation de chaîne brute, ce qui signifie r "\\". Sans notation chaîne brute, il faut utiliser "\\\\", rendant les lignes de code fonctionnellement identique suivantes:

>>> Re. Correspondance (r "\\", r "\\")
<_sre.SRE_Match objet à ...>
>>> re. Correspondance ("\\\\", r "\\")
< _sre.SRE_Match objet à ...>