使用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:
_.-.
'( ^{_} (
`~\`-----'\
)_)---)_)
我一直无法弄清楚为什么会发生这种情况,而且我已经在几个环境中进行了测试,它有什么问题?
答案 0 :(得分:5)
format
方法也将{_}
视为命名占位符之一,并期望键_
具有键:值对。由于找不到匹配项,因此KeyError: '_'