Python 打印命名元组

Python 打印命名元组,python,namedtuple,Python,Namedtuple,在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 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:在字符串格式化过程中并非所有参数都已转换

编辑: 我应该知道看看

你可以这样做:

>>> print("my_test = %r" % str(my_test))
my_test = 'Test(this=1, that=2)'

由于
my\u test
是一个元组,它将为元组中的每个项目寻找
%
格式。要绕过此问题,请将其包装到另一个元组中,其中唯一的元素是
my\u test

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

不要忘记逗号。

它将其解压为两个参数。与之相比:

print("dummy1 = %s, dummy2 = %s" % ("one","two"))
在您的情况下,尝试将其放入元组中

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

前面的答案是有效的,但如果您不想打印姓名,这里有一个选项。它是一个单行程序,设计用于只打印任意长度的命名元组的内容。给定一个指定给“named_tuple”的命名元组,下面将生成一个用逗号表示的键=值对字符串:

', '.join(['{0}={1}'.format(k, getattr(named_tuple, k)) for k in named_tuple._fields])
如现在在中所述,
%
字符串格式或插值运算符存在问题:

[printf style string formatting operations]表现出各种各样的怪癖,导致许多常见错误(例如无法正确显示元组和字典)。使用较新的格式化字符串文本或str.format()接口有助于避免这些错误

例如,您现在可以执行以下操作:

from collections import namedtuple
Test = namedtuple('Test', ['this', 'that'])
my_test = Test(this=1, that=2)
print("my_test = {0!r}".format(my_test))

真不敢相信我被这个咬了。。。再一次。谢谢副本。如果您意识到您的问题是重复的,请将其标记为“它不属于这里->完全重复”,不要只是添加问题的链接。