如何修改pyweb代码消除生成文件中字符串内部多余缩进空格
问题原因
pyweb默认会对代码块内插入的宏内容,自动匹配插入位置前方的字符长度作为缩进量,你遇到的12个空格就是filename = '的总长度被判定为缩进量,自动添加到了宏path的输出内容前方。
解决方案
方案1:使用非缩进宏插入语法(最简便)
在宏引用的标识符前加|标记,告诉pyweb不要给这个宏的输出加自动缩进,修改后的代码如下:
@d path @{/path/to/the/directory/@} @o code @{ filename = '@<|path@>the_file' @}
方案2:关闭当前代码块的自动缩进
如果整个代码块都不需要自动缩进功能,可以给@o指令加上-noindent参数:
@d path @{/path/to/the/directory/@} @o code -noindent @{ filename = '@<path@>the_file' @}
方案3:调整字符串写法避免缩进判定
如果你的pyweb版本不支持上述语法,可以修改字符串写法,把宏插入位置移到不会被判定为需要缩进的位置:
@d path @{/path/to/the/directory/@} @o code @{ filename = ''@<path@>'the_file' @}
以上任意一种方案修改后,运行python3 -m pyweb test.w -wHTML生成的代码都会符合预期,无多余空格:
filename = '/path/to/the/directory/the_file'
内容的提问来源于stack exchange,提问作者bgukw
相关产品推荐
相关产品推荐

