Python f 字符串:替换 newline/linebreak
Python f-string: replacing newline/linebreak
首先,抱歉:我很确定这可能是一个 "duplicate" 但我没有成功找到正确的解决方案。
我只是想替换我的 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 字符串,但我真的很想将我的 "log the line" 代码放在一行中,并且没有额外的辅助变量。
(此外,我认为这是一种非常愚蠢的行为:要么你可以执行大括号内的代码,要么你不能...不是 "you can, but only without backslashes"...)
这个不是理想的解决方案,因为存在其他变量:
常规更新
mkrieger1s评论中的建议:
self.logger.debug("Executing %s", sql.replace('\n',' '))
对我来说效果很好,但因为它根本不使用 f 弦(无论好坏 ;)),我想我可以保留这个问题。
你可以做到
newline = '\n'
self.logger.debug(f"Executing: {sql.replace( newline,' ')}")
- 不要使用 f-strings,尤其是日志记录
- 将换行符分配给一个常量并使用它,您显然不想这样做
- 使用其他表达换行符的版本,例如
chr(10)
(Besides I think it's a quite stupid behavior: Either you can execute code within the curly brackets or you cant't...not "you can, but only without backslashes"...)
随时尝试修复它,我很确定没有添加此限制,因为 PEP 作者和功能开发人员希望它成为一个麻烦。
我找到了可能的解决方案
from os import linesep
print(f'{string_with_multiple_lines.replace(linesep, " ")}')
最佳,
首先,抱歉:我很确定这可能是一个 "duplicate" 但我没有成功找到正确的解决方案。
我只是想替换我的 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 字符串,但我真的很想将我的 "log the line" 代码放在一行中,并且没有额外的辅助变量。
(此外,我认为这是一种非常愚蠢的行为:要么你可以执行大括号内的代码,要么你不能...不是 "you can, but only without backslashes"...)
这个不是理想的解决方案,因为存在其他变量:
常规更新 mkrieger1s评论中的建议:
self.logger.debug("Executing %s", sql.replace('\n',' '))
对我来说效果很好,但因为它根本不使用 f 弦(无论好坏 ;)),我想我可以保留这个问题。
你可以做到
newline = '\n'
self.logger.debug(f"Executing: {sql.replace( newline,' ')}")
- 不要使用 f-strings,尤其是日志记录
- 将换行符分配给一个常量并使用它,您显然不想这样做
- 使用其他表达换行符的版本,例如
chr(10)
(Besides I think it's a quite stupid behavior: Either you can execute code within the curly brackets or you cant't...not "you can, but only without backslashes"...)
随时尝试修复它,我很确定没有添加此限制,因为 PEP 作者和功能开发人员希望它成为一个麻烦。
我找到了可能的解决方案
from os import linesep
print(f'{string_with_multiple_lines.replace(linesep, " ")}')
最佳,