列表中包含列表项的Python列表格式字符串

2024-07-04 16:09:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下清单:

my_list = ['Ciao', True, 2.5, 18, 0x001, 8+15j, [5,'cacao', [2.2, 'Torino', False]]]

我想打印格式化的输出,但出现以下错误:

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__

直到列表确定为止

> 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}}')

Tags: infalsetrue列表mytypecolwidth
3条回答

使用repr将列表强制为str。使格式可用:

print(f"{repr(a):40} => {str(type(a)):40}")

这张照片

[5, 'cacao', [2.2, 'Torino', False]]     => <class 'list'>

我想这是意料之中的

您可以首先转换为str(i),而不是直接传递i

for i in my_list:
    print(f'{str(i):{col_width}} ==> {str(type(i)):{col_width}}')
#            ^ here

输出

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'> 

基于@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}}")


输出:

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'> 

相关问题 更多 >

    热门问题