défaut de python2.7 sur la gestion des nombres > 255

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour chers agrumes.

Bon, j'essaye d'analyser un fichier pou retirer des infos en python. Voici un exemple de ligne de ce fichier:

/NodeList/256/DeviceList/0/Phy/State/Tx Sender:0 actual_time:1.22693 send_time:1.20253e+09 packet_id:44

Voici la regex que j'utilise pour extraire les nombres de ces lignes:

r"/NodeList/(\d+)/DeviceList/0/Phy/State/Tx Sender:(\d+) actual_time:([a-zA-Z0-9.]+) send_time:([a-zA-Z0-9.+]+) packet_id:(\d+)"

Mais je me rends compte qu'au delà de la valeur 255 (pour ce qui est du premier nombre), il ne repère plus mes valeurs (en gros la ligne n'est pas "matché"). Quelqu'un aurait une idée de ce que je peux faire pour corriger ce problème

+0 -0
Staff

Je pense que ton problème viens d'ailleurs car d+ fonctionne très bien chez moi :

1
2
3
4
5
6
7
8
>>> import re
>>> REG = re.compile(r"(\d+)")
>>> REG.match("255").groups(0)
('255',)
>>> REG.match("256").groups(0)
('256',)
>>> REG.match("1024").groups(0)
('1024',)

D'ailleurs ton exemple marche aussi très bien chez moi :

1
2
3
>>> REG = re.compile(r"/NodeList/(\d+)/DeviceList/0/Phy/State/Tx Sender:(\d+) actual_time:([a-zA-Z0-9.]+) send_time:([a-zA-Z0-9.+]+) packet_id:(\d+)")
>>> REG.match("/NodeList/256/DeviceList/0/Phy/State/Tx Sender:0 actual_time:1.22693 send_time:1.20253e+09 packet_id:44").groups()
('256', '0', '1.22693', '1.20253e+09', '44')

Du coup là avec ce que tu donne, je ne vois aucun soucis !

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte