是否有一个紧凑的 f 字符串表达式用于打印带有空格格式的非 str 对象?

问题描述 投票:0回答:1

f-string 允许使用非常紧凑的表达式来打印带有间距的 str 对象,如下所示:

a = "Hello"
print(f'{a=:>20}')
a=               Hello

有没有办法对其他对象执行相同的操作,如下所示:

from pathlib import Path               
b=Path.cwd()
print(f'{b=:>20}')
Traceback (most recent call last):
  File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode
    exec(code, self.locals)
  File "<pyshell#11>", line 1, in <module>
TypeError: unsupported format string passed to PosixPath.__format__

替代方案是:

print(f'b={str(b):>20}')
b=        /home/user

但是这个方法会丢失我这样做时显示的对象信息:

print(f'{b=}')
b=PosixPath('/home/user')

期望的结果是打印

b=                  PosixPath('/home/user')
python
1个回答
0
投票

您可以使用

repr()

from pathlib import Path

b = Path.cwd()
res = f'{repr(b):>40}'
print(f'b={res}')
© www.soinside.com 2019 - 2024. All rights reserved.