Python多行f-string输出到文件出现多余缩进如何解决?
多行f-string多余缩进的解决方案
三引号字符串会原样保留代码中书写的前置缩进,你可以用以下两种方式兼顾代码排版和输出格式:
方法1:使用textwrap.dedent(推荐)
这是Python标准库提供的专用工具,不需要额外安装依赖,会自动移除多行字符串所有行共有的最小前置缩进,无需破坏代码的层级排版。
示例代码:
import textwrap def foo(): ml.append(textwrap.dedent(f"""\ #define {ip}_{mtype}_{secname}_{fieldname}_MASK (MASK({H},{L})) #define {ip}_{mtype}_{secname}_{fieldname}_START_BIT ({fieldsb}) """))
注意开头三引号后的\是为了避免输出的第一行出现多余空行,你可以根据自己的需求决定是否添加。
方法2:使用隐式字符串拼接
如果不想引入额外导入,可以利用Python括号内相邻字符串自动拼接的特性,拆分每行字符串书写:
def foo(): ml.append( f"#define {ip}_{mtype}_{secname}_{fieldname}_MASK (MASK({H},{L}))\n" f"#define {ip}_{mtype}_{secname}_{fieldname}_START_BIT ({fieldsb})\n" )
这种方式不会把代码排版用的缩进带入最终输出,适合行数量较少的场景。
内容的提问来源于stack exchange,提问作者AdamF
相关产品推荐
相关产品推荐

