如何使用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'
。