Python 3.0,3.1,3.2中的“ValueError: 格式中零长度字段名称”错误

119 投票
3 回答
62690 浏览
提问于 2025-04-16 14:30

我正在尝试学习Python(更具体地说是Python 3),但遇到了这个错误:

ValueError: zero length field name in format

我在网上查了一下,发现你需要指定数字:

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))

而不是像教程(来自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))

我正在跟随的教程是Python 3.1的,而我用的是3.2。我看到关于这个错误的解释是,这个错误只会在小于3.1(也就是3.0)时出现。难道在3.2中这个问题被修复了,还是我做错了什么?

另外,能慢点说吗;)这是我学习Python的第一天,而且这是我写的第二个“脚本”。

3 个回答

2

如果你在使用Eclipse这个软件,可以去看看窗口菜单里的设置,路径是:窗口 -> 首选项 -> PyDev -> 解释器 -> Python。在那里你会看到一个解释器的列表,里面有名字和位置。如果你当前项目使用的解释器在比如说 /usr/bin/python 这个地方,那么你执行 /usr/bin/python -V 这个命令,可能会得到类似“Python 2.6.6”的结果。这就是你的答案,就像Winston Ewert说的那样。

(你可以通过点击“新建...”按钮来添加新的解释器,然后把 /usr/bin/python3 作为“位置”填进去。接着你可能需要更改一下项目的设置,路径是:首选项 -> PyDev -> 解释器/语法)。

148

在Python 2.6和3.0中,必须指定字段编号。而在Python 2.7及之后的版本和3.1及之后的版本中,这些编号可以省略。

在2.7版本中进行了更改:位置参数的指定可以省略,所以'{} {}'和'{0} {1}'是等价的。

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

我猜你可能不小心在用Python 2.6。

这个功能至少在Python 3.1或Python 2.7中才有。

撰写回答