Python 打印命名元组
在Python 2.7.1中,我可以创建一个命名元组: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:在字符串格式
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))
真不敢相信我被这个咬了。。。再一次。谢谢副本。如果您意识到您的问题是重复的,请将其标记为“它不属于这里->完全重复”,不要只是添加问题的链接。