私は に適切な数の変数にsplit()
の戻り値を割り当て/解凍することができますが、フォーマット指示文を使用した 印刷文字列では使用できません。分割印刷の割り当てが機能しないのはなぜですか?
例えばは、与えられた:
In [202]: s
Out[202]: 'here are 4 values'
In [203]: s.split()
Out[203]: ['here', 'are', '4', 'values']
この期待通りに動作します:
In [204]: a, b, c, d = s.split()
In [205]: print '%s %s %s %s' % (a, b, c, d)
here are 4 values
しかし、これは失敗した。..
In [206]: print '%s %s %s %s' % (s.split())
私がなぜわかりませんか? split()
の返品を にして、 の書式設定文字列の予想される引数に分配するべきではありませんか?
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
C:\bla\Desktop\<ipython-input-206-600f130ff0b2> in <module>()
----> 1 print '%s %s %s %s' % (s.split())
TypeError: not enough arguments for format string
「十分な議論をしてください」リストには正しい数の項目があります。この場合、何らかの理由でリストが展開されないのですが、変数への代入がありますか?
私はあなたがフォーマットのためにそう
>>> s = 'here are 4 values'
>>> '%s %s %s %s' % tuple(s.split())
'here are 4 values'
ようタプルにs.split()
を変換または引数を開梱、代わりに.format()
を使用する必要があり、この質問 writing column entry just one below another in python
を:
@senderleはこの構文はここでしか、Pythonの2.7とアップのために働くことを指摘し、以前のバージョンで動作するコードは次のようになります。ここで働く方法です。タプルが必要ですか?なぜなら、%に続く最後のprintステートメントに与えるものはタプル(これまで考えていた引数のリストではありません)であるからです。 – Levon
はいタプルが必要だと思います。 – jamylak
ありがとう! – Levon