【问题标题】:Python ''.format(): "tuple index out of range"?Python''.format():“元组索引超出范围”?
【发布时间】:2010-09-16 00:04:10
【问题描述】:

考虑以下 sn-p:

>>> def foo(port, out, udp=False, ipv6=False, data=''):
...     if not data:
...             data = 'foo {family} {:port} {direction}'.format(
...                             family=('ipv6' if ipv6 else 'ipv4'),
...                             port=port,
...                             direction=('out' if out else 'in'))
...     return data
...
>>> foo(12345, out=True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 6, in foo
IndexError: tuple index out of range

据我所知,名称的范围看起来还不错。神秘错误是怎么回事?

【问题讨论】:

  • 没关系。 {:port} 应该是 {port:}。

标签: python string formatting


【解决方案1】:

注意冒号。将其从端口区域的前面移开:

要么

data = 'foo {family} {port:} {direction}'.format(

或者

data = 'foo {family} :{port} {direction}'.format(

两个选项的结果是:

>>> foo(12345, out=True)
'foo ipv4 12345 out'
>>> foo(12345, out=True)
'foo ipv4 :12345 out'    

【讨论】:

  • 注明。 它们被称为“冒号”。 ;-)
  • 这根本不是迂腐的:) 补救。
【解决方案2】:

{:port} 应该是{port:}。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-04
    • 2013-12-16
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多