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メソッド{_}は、名前付きプレースホルダーの 1 つとも見なし、 key との key:value ペアを想定しています_。一致が見つからないため、失敗しますKeyError: '_'

于 2013-10-24T04:32:59.287 に答える