119 votes

Erreur "ValueError : zero length field name in format" dans Python 3.0,3.1,3.2

J'essaie d'apprendre Python (3 pour être plus précis) et j'obtiens cette erreur :

ValueError: zero length field name in format

J'ai fait une recherche sur Google et j'ai découvert qu'il fallait préciser les chiffres :

a, b = 0, 1
if a < b:
     print('a ({0}) is less than b ({1})'.format(a, b))
else:
     print('a ({0}) is not less than b ({1})'.format(a, b))

Et pas comme le dit le tutoriel (de lynda.com) :

a, b = 0, 1
if a < b:
     print('a ({}) is less than b ({})'.format(a, b))
else:
     print('a ({}) is not less than b ({})'.format(a, b))

Le tutoriel que je suis utilise Python 3.1, et j'utilise 3.2. Ce que j'ai lu à propos de cette erreur est que cela ne se produit que dans la version 3.1 (3.0). Est-ce que cela a été supprimé dans la version 3.2 ou est-ce que je fais quelque chose de mal ?

Aussi, parlez lentement ;) c'est littéralement ma première nuit d'apprentissage de Python et seulement le 2ème "script" que j'ai écrit en Python.

148voto

Dennis Williamson Points 105818

Python 2.6 et 3.0 requiert les numéros de champs. Dans Python 2.7 et plus et 3.1 et suivants, ils peuvent être omis.

Modifié dans la version 2.7 : Les spécificateurs d'arguments positionnels peuvent être omis. omis, ainsi '{} {}' est équivalent à '{0} {1}'.

python2.6.4>>> print '|{0:^12}|{1:^12}|'.format(3,4)
|     3      |     4     |

130voto

Winston Ewert Points 17746

Je suppose que vous exécutez python 2.6 par accident.

Cette fonctionnalité n'est disponible que depuis au moins la version 3.1 si vous utilisez python 3, ou 2.7 si vous utilisez python 2.

2voto

ilektrik Points 121

Si vous utilisez Eclipse, vous devriez regarder dans Fenêtre -> Préférences -> PyDev -> Interpréteur - Python. Vous y trouverez une liste d'interprètes (avec leur nom et leur emplacement). Si pour votre projet actuel vous utilisez l'interpréteur qui est situé par exemple dans /usr/bin/python, alors probablement l'exécution de /usr/bin/python -V vous donnera quelque chose comme "Python 2.6.6". Et voilà votre réponse comme l'a écrit Winston Ewert.

(vous pouvez ajouter un nouvel interpréteur en cliquant simplement sur le bouton "Nouveau..." et en indiquant /usr/bin/python3 comme "emplacement". Ensuite, vous devez probablement modifier les paramètres de votre projet (Préférences -> PyDev - Interprète/Grammaire).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X