J'ai une chaîne qui a un numéro de version. Je veux lire le numéro de version de ce code pour pouvoir le comparer avec d'autres codes que j'utilise. J'ai le code fait ci-dessous, mais ne peut pas le faire fonctionner, quelqu'un peut-il voir le problème?Comment faire correspondre les informations d'une chaîne
print results
r = re.compile(r'(version\s*\s*)(\S+)')
for l in results:
m1 = r.match(l)
if m1:
ID=map(int,m1.group(2).split("."))
l = r.sub(r'\g<1>' + '.'.join(['%s' % (v) for v in ID]), l)
print ID
la variable des résultats est la suivante:
Name Info Type Call version 1.0.40.437 Fri Oct 2 10:54:35 BST 2009
Je l'ai fait de cette façon que j'ai besoin les chiffres de l'ID séparés en groupes que je dois comparer le 3ème numéro dans l'ID au troisième numéro dans l'ID dans un autre fichier. Les réponses ci-dessous sont utiles, mais comme je l'ai fait, je lisais un fichier, je prenais tous les nombres et je les rangeais dans une liste, donc tout ce que je devais faire était de comparer les deux nombres de la liste. Désolé si la question n'était pas claire mais je ne veux pas que le numéro de version soit une chaîne.
Okay J'ai apporté quelques modifications au code qui a été répondu ci-dessous. Le code est le suivant:
version = re.compile('version\s+([\d.]+)\s+')
ID = version.search(results)
if ID:
value = ID.group(1).split('.')[2]
self.assertEqual(BUILD_ID[2], int(value))
Cela ne crée pas la liste que je voulais mais cela me permet de comparer les 2 valeurs.
Merci pour toute l'aide.
De quel type s'agit-il? Si c'est une chaîne, votre boucle traverse chaque caractère, pas chaque mot. –
'\ s * \ s *' est équivalent à '\ s *'. Qu'essayais-tu de faire là? –