显示列表元素,就像他们被输入一样。

问题描述 投票:2回答:3

这是代码。

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

它说:

TypeError: sequence item 1: expected str instance, int found.

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

', '.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
python string python-2.x
3个回答
1
投票

你可以使用 repr 内置的。

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

这将产生预期的输出,因为

对于许多类型,这个函数试图返回一个字符串,当传递给eval()时,这个字符串将产生一个具有相同值的对象。

例如:如果只是为了打印

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

0
投票

如果只是为了打印目的:

test = ['26', 1, '050120', '084922', u'43034775', u'RRR', '', None]

print(str(test)[1:-1])

0
投票

到您的预期输出 '26', 1, '050120', '084922', u'43034775', u'RRR', '', None. 使用列表的格式,并去掉方括号。

test = ['26', 1, '050120', '084922', u'43034775', u'RRR', '', None]
print(str(test).strip("[]")) # '26', 1, '050120', '084922', '43034775', 'RRR', '', None
© www.soinside.com 2019 - 2024. All rights reserved.