如何删除 Python 三引号多行字符串的额外缩进?

新手上路,请多包涵

我有一个 python 编辑器,用户在其中输入脚本或代码,然后将其放入幕后的主要方法中,同时还缩进了每一行。问题是,如果用户有一个多行字符串,则对整个脚本所做的缩进会影响字符串,因为会在每个空格中插入一个制表符。问题脚本会很简单,例如:

 """foo
bar
foo2"""

所以在 main 方法中它看起来像:

 def main():
    """foo
    bar
    foo2"""

并且该字符串现在在每一行的开头都有一个额外的制表符。

原文由 Mike 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

因此,如果我理解正确,您可以接受用户输入的任何内容,正确缩进并将其添加到程序的其余部分(然后运行整个程序)。

因此,在您将用户输入放入您的程序后,您可以运行一个正则表达式,它基本上可以收回强制缩进。类似于:在三个引号内,将所有“换行标记”后跟四个空格(或制表符)替换为仅一个“换行标记”。

原文由 FlorianH 发布,翻译遵循 CC BY-SA 3.0 许可协议

标准库中的 textwrap.dedent 可以自动撤消古怪的缩进。

原文由 thraxil 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏