[英]Python list format string with list item inside list
我有以下列表:
my_list = ['Ciao', True, 2.5, 18, 0x001, 8+15j, [5,'cacao', [2.2, 'Torino', False]]]
我想打印格式化的 output,但是,我收到以下错误:
Traceback (most recent call last):
File "D:\Lesson02\lesson02_ex01.py", line 9, in <module>
print(f'{i:{col_width}} ==> {str(type(i)):{col_width}}')
TypeError: unsupported format string passed to list.__format__
结果直到列表OK。
> Ciao ==> <class 'str'>
> 1 ==> <class 'bool'>
> 2.5 ==> <class 'float'>
> 18 ==> <class 'int'>
> 1 ==> <class 'int'>
> (8+15j) ==> <class 'complex'>
列表的列表项有什么问题?
谢谢!
我的代码如下:
my_list = ['Ciao', True, 2.5, 18, 0x001, 8+15j, [5,'cacao', [2.2, 'Torino', False]]]
print(my_list)
col_width=15
for i in my_list:
print(f'{i:{col_width}} ==> {str(type(i)):{col_width}}')
您可以先转换为str(i)
而不是直接传递i
for i in my_list:
print(f'{str(i):{col_width}} ==> {str(type(i)):{col_width}}')
# ^ here
Output
Ciao ==> <class 'str'>
True ==> <class 'bool'>
2.5 ==> <class 'float'>
18 ==> <class 'int'>
1 ==> <class 'int'>
(8+15j) ==> <class 'complex'>
[5, 'cacao', [2.2, 'Torino', False]] ==> <class 'list'>
使用repr
将您的列表强制为str
。 这使得格式可用:
print(f"{repr(a):40} => {str(type(a)):40}")
这打印
[5, 'cacao', [2.2, 'Torino', False]] => <class 'list'>
正如预期的那样,我猜。
基于@CoryKramer 的回答
由于您已经使用 str() 转换了列表中的每个项目,因此您可以使用 .lstrip() 来剥离 'frozenset',只要它是字符串的一部分。
my_list = [
'Ciao', True, 2.5, 18, 0x001, 8 + 15j, [5, 'cacao', [2.2, 'Torino', False]], frozenset(['one', 'two', 3])
]
col_width = 20
for i in my_list:
print(f"{str(i).lstrip('frozenset'):{col_width}} ==> {str(type(i)):{col_width}}")
Output:
Ciao ==> <class 'str'>
True ==> <class 'bool'>
2.5 ==> <class 'float'>
18 ==> <class 'int'>
1 ==> <class 'int'>
(8+15j) ==> <class 'complex'>
[5, 'cacao', [2.2, 'Torino', False]] ==> <class 'list'>
({'one', 3, 'two'}) ==> <class 'frozenset'>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.