繁体   English   中英

Python 列表格式字符串,列表项在列表中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM