5

Python 2.7.1 では、名前付きタプルを作成できます。

from collections import namedtuple
Test = namedtuple('Test', ['this', 'that'])

私はそれを移入することができます:

my_test = Test(this=1, that=2)

そして、次のように印刷できます。

print(my_test)

テスト (これ = 1、それ = 2)

しかし、なぜこのように印刷できないのですか?

print("my_test = %r" % my_test)

TypeError: 文字列のフォーマット中にすべての引数が変換されるわけではありません

編集: Pythonで文字列フォーマットを使用 した印刷タプルを見ることを知っていたはずです

4

5 に答える 5

10

はタプルなので、タプル内の各アイテムmy_testのフォーマットを探します。%これを回避するには、唯一の要素が である別のタプルにラップしますmy_test

print("my_test = %r" % (my_test,))

コンマを忘れないでください。

于 2011-09-22T21:51:16.350 に答える
2

あなたはこれを行うことができます:

>>> print("my_test = %r" % str(my_test))
my_test = 'Test(this=1, that=2)'
于 2011-09-22T21:49:03.943 に答える
2

2 つの引数として展開しています。と比べて:

print("dummy1 = %s, dummy2 = %s" % ("one","two"))

あなたの場合、それをタプルに入れてみてください。

print("my_test = %r" % (my_test,))
于 2011-09-22T21:51:54.213 に答える
0

以前の回答は有効ですが、名前を印刷したくない場合のオプションは次のとおりです。これは、任意の長さの名前付きタプルの内容のみをきれいに出力するために考案されたワンライナーです。「named_tuple」に割り当てられた名前付きタプルを指定すると、以下は、key=value ペアのコンマ区切りの文字列を生成します。

', '.join(['{0}={1}'.format(k, getattr(named_tuple, k)) for k in named_tuple._fields])
于 2014-03-11T05:27:00.887 に答える