[英]Python f-string: replacing newline/linebreak
首先,抱歉:我很确定这可能是“重复”,但我没有成功找到正确的解决方案。
我只是想替换我的 sql 代码中的所有换行符以将其记录到一行,但 Python 的 f 字符串不支持反斜杠,因此:
# Works fine (but is useless ;))
self.logger.debug(f"Executing: {sql.replace( 'C','XXX')}")
# Results in SyntaxError:
# f-string expression part cannot include a backslash
self.logger.debug(f"Executing: {sql.replace( '\n',' ')}")
当然,在f-string之前有几种方法可以实现这一点,但我真的很想将我的“记录行”代码保留在一行中,并且没有额外的辅助变量。
(此外,我认为这是一个非常愚蠢的行为:要么您可以在大括号内执行代码,要么您不能……不是“您可以,但只能没有反斜杠”……)
由于其他变量,这不是理想的解决方案:
如何在 f-string 中使用换行符 '\\n' 来格式化 Python 3.6 中的输出?
一般更新mkrieger1s 评论中的建议:
self.logger.debug("Executing %s", sql.replace('\n',' '))
对我来说很好用,但因为它根本不使用 f 字符串(因为它本身是好的或坏的 ;)),我想我可以让这个问题保持开放。
我找到了可能的解决方案
from os import linesep
print(f'{string_with_multiple_lines.replace(linesep, " ")}')
最好的事物,
你可以这样做
newline = '\n'
self.logger.debug(f"Executing: {sql.replace( newline,' ')}")
chr(10)
(此外我认为这是一个非常愚蠢的行为:你可以在大括号内执行代码,或者你不能......不是“你可以,但只有没有反斜杠”......)
随意修复它,我很确定没有添加这个限制,因为PEP作者和功能开发人员希望它是一个痛苦的屁股。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.