Tkinter contiendrait le module re ?

Résolu
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   -  
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Ce code-ci ne fonctionne pas ( re inconnu) :

#import re

pat = '^[A-Za-z_0-9]+ [0-9\.]+x[0-9\.]+$'
s = 'xxx 160x100'

if not re.match(pat, s): print('erreur')

Par contre celui-là fonctionne bien:

from tkinter import *

pat = '^[A-Za-z_0-9]+ [0-9\.]+x[0-9\.]+$'
s = 'xxx 160x100'

if not re.match(pat, s): print('erreur')

Etonnant, non ?
Windows / Edge 114.0.1823.79

4 réponses

Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

Bah non,

Pour être sur que ca marche tout le temps, j'ai importé les 2 modules

(en fait, dans le code complet il y a une interface graphique)

import re
from tkinter import *
1
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 

Bonjour,

Oui, c'est ce qu'il faut faire. En effet, rien ne garantit que tkinter importe re. Il vaut donc mieux importer le module re explicitement.

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168 > mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention  
 

Bonjour,

C'est bien ce que j'ai fait

0
Diablo76 Messages postés 240 Date d'inscription   Statut Membre Dernière intervention   76
 

Salut,

Oui, tkinter importe le module (ligne 41).

https://github.com/python/cpython/blob/v3.11.0/Lib/tkinter/__init__.py

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

Salut,

Ok

Je suis en Python 3.7.2, et je pense que ce n'est plus valable dans les versions

plus récentes car le programme sort une erreur sur une autre machine ayant

installé Python récemment (il faut vraiment ajouter import re)

0
Diablo76 Messages postés 240 Date d'inscription   Statut Membre Dernière intervention   76
 

On pourrait l'importer explicitement dans les versions supérieures, mais bon, je n'y vois pas trop l'intérêt :-)

from tkinter import re

pat = '^[A-Za-z_0-9]+ [0-9\.]+x[0-9\.]+$'
s = 'xxx 160x100'

if not re.match(pat, s): print('erreur')
0