如何使用Python格式的字符串“(f';…';)”在子字符串周围添加空格,而不首先创建新变量?

如何使用Python格式的字符串“(f';…';)”在子字符串周围添加空格,而不首先创建新变量?,python,python-3.x,Python,Python 3.x,假设,我想将以下.format()'ed字符串转换为f'…'表达式: self.logger.debug('{:10} -- {}'.format('Jira', 'Scan: {} '.format(self.scan_id))) 我可以很容易地做到这一点,因为: self.logger.debug(f'Jira -- {self.scan_id}`) 但是,我不想在'Jira'周围手动添加空格(宽度)。我如何做到这一点,而不必首先创建一个新变量,如中所示: s='Jira' s

假设,我想将以下
.format()
'ed字符串转换为
f'…'
表达式:

self.logger.debug('{:10} -- {}'.format('Jira', 'Scan: {} '.format(self.scan_id)))
我可以很容易地做到这一点,因为:

self.logger.debug(f'Jira      -- {self.scan_id}`)
但是,我不想在
'Jira'
周围手动添加空格(宽度)。我如何做到这一点,而不必首先创建一个新变量,如中所示:

s='Jira'
self.logger.debug(f'{s:10} -- {self.scan_id}`)

您可以直接将字符串放在花括号中,如下所示:

self.logger.debug(f'{"Jira":10} -- {self.scan_id}')

因为f-string需要在
{}
中有一个表达式,而字符串本身是一个有效的表达式。

通常应该避免在日志调用中直接进行字符串格式化,因为这会浪费时间格式化从未发出的字符串。相反,您应该更喜欢使用记录器的内置格式

您可能如何实现日志调用的示例如下:

logger.debug('% -10s -- %s', 'Jira', self.scan_id)

默认情况下,
日志记录
模块使用百分比格式()。如果您更熟悉大括号格式(即,使用
{}
),并且更喜欢使用大括号格式,那么这将向您展示如何设置大括号格式。

关于
f'{”“*10}'
?@bereal-那么我需要从10中减去
'Jira'
的长度以获得原始结果。旁注,您应该避免在日志记录时直接进行字符串格式化。他们最终可能会做一些不必要的工作,这些工作被丢弃,而不是排放出去。例如,如果日志记录级别设置为INFO。@Dunes-我应该只使用固定字符串吗?@Shuzheng添加了响应作为答案-我不能只使用
logging.Formatter的
style='%'
参数来设置格式。\uuu init\uuu
?否,因为它引用了格式化程序模板。链接的问题是关于如何使用消息模板设置大括号格式。格式化程序模板引用发出的整行,消息模板是其中的一部分。格式化程序模板可能包括诸如级别、时间、记录器名称等内容。。。例如,
logging.Formatter('{asctime}{name}{levelname:8s}{message}',style='{')
。此答案中的
消息
模板将是
'%-10s--%s'