Python F字符串:替换换行符/换行符

时间:2019-05-18 12:10:07

标签: python python-3.7 f-string

首先,对不起:我可以肯定这可能是“重复”,但我没有成功找到正确的解决方案。

我只是想替换我的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字符串之前完成 ,但是我真的很想将我的“日志记录”代码保持在一行中,而没有其他辅助变量。

(此外,我认为这是一种非常愚蠢的行为:您可以在大括号内执行代码,或者不能...不是“可以,而只能使用反斜杠” ...)

由于其他变量,这不是理想的解决方案:

How to use newline '\n' in f-string to format output in Python 3.6?

常规更新 mkrieger1s评论中的建议:

        self.logger.debug("Executing %s", sql.replace('\n',' '))

对我来说很好用,但是由于它根本不使用f字符串(蜂鸣本身就是好是坏;),我想我可以把这个问题留待解决。

2 个答案:

答案 0 :(得分:0)

您可以做到

newline = '\n'
self.logger.debug(f"Executing: {sql.replace( newline,' ')}")

答案 1 :(得分:0)

  1. 不要使用f字符串,尤其是用于记录
  2. 将换行符分配给一个常量并使用该常量,您显然不想这么做
  3. 使用其他版本的换行符,例如chr(10)
  

(此外,我认为这是一种非常愚蠢的行为:您可以在大括号内执行代码,或者不能...不是“可以,而只能使用反斜杠” ...)

随时进行修复,我很确定没有添加此限制,因为PEP作者和功能开发人员希望它成为麻烦。