首页 > 解决方案 > 显示列表元素,就好像它们是输入的一样

问题描述

这是代码:

test = ['26', 1, '050120', '084922', u'43034775', u'RRR', '', None]
print(', '.join(test))

它说:

类型错误:序列项 1:预期的 str 实例,找到 int

有没有不看元素类型就可以加入的方法?

', '.join(str(v) for v in test)

不是一个好的解决方案。它打印:

26, 1, 050120, 084900, 21747, 1200.0, X, X, 18034775, 5TDDK3DC4BS029227, , None

我想保留元素类型并按原样打印:

'26', 1, '050120', '084922', u'43034775', u'RRR', '', None

标签: pythonstringpython-2.x

解决方案


你可以使用repr内置的。

print(', '.join(map(repr, test)))

这会产生所需的输出,因为

对于许多类型,此函数尝试返回一个字符串,该字符串在传递给 eval() 时会产生具有相同值的对象

例子:

>>> str(1)
'1'
>>> str('1')
'1'
>>> repr(1)
'1'
>>> repr('1')
"'1'"

推荐阅读