2

使用 python 2.7.4 和 3.3.1:

from textwrap import dedent as dd


name='Maruja'

print(dd('''
         {0}:
           _.-.
         '( ^{_}    (
           `~\`-----'\\
              )_)---)_)
         '''.format(name)))

这是两者的关键错误:

$ python3 test.py    # or python2 test.py
Traceback (most recent call last):
  File "test.py", line 9, in <module>
    '''.format(name)))
KeyError: '_'

使用 % 运算符它可以工作:

from textwrap import dedent as dd


name ='Maruja'

print(dd('''
         %s:
           _.-.
         '( ^{_}    (
           `~\`-----'\\
              )_)---)_)
         ''' % name))

没有错误,但为什么?

$ python3 test2.py    # or python2 test2.py
Maruja:
  _.-.
'( ^{_}    (
  `~\`-----'\
     )_)---)_)

我一直无法弄清楚为什么会发生这种情况,并且我已经在多个环境中进行了测试,它有什么问题?

4

1 回答 1

5

format方法{_}也被认为是命名占位符之一,它需要一个带有 key 的 key:value 对_。由于找不到匹配项,因此失败了KeyError: '_'

于 2013-10-24T04:32:59.287 回答