Convertir, ou unformat, une chaîne de variables (comme le format(), mais en sens inverse) en Python

J'ai cordes de la forme Version 1.4.0\n et Version 1.15.6\n, et je voudrais un moyen simple d'extraire les trois numéros d'eux. Je sais que je peux mettre des variables dans une chaîne de caractères avec la méthode de mise en forme; en gros, je veux le faire à l'envers, comme ceci:

# So I know I can do this:
x, y, z = 1, 4, 0
print 'Version {0}.{1}.{2}\n'.format(x,y,z)
# Output is 'Version 1.4.0\n'

# But I'd like to be able to reverse it:

mystr='Version 1.15.6\n'
a, b, c = mystr.unformat('Version {0}.{1}.{2}\n')

# And have the result that a, b, c = 1, 15, 6

Quelqu'un d'autre, j'ai trouvé posé la même question, mais la réponse était spécifique à leur cas particulier: L'utilisation de Python dans la chaîne de format dans le sens inverse pour l'analyse

Une réponse générale (comment faire de la format() dans le sens inverse) ce serait génial! Une réponse pour mon cas précis serait très utile aussi bien.

  • je vois certaines réponses ci-dessous qui sont directement à votre problème. mais la meilleure solution serait d'utiliser des expressions régulières à mon humble avis.
  • Cela semble une bonne utilisation pour scanf de style C
InformationsquelleAutor evsmith | 2012-08-07