1. ホーム
  2. python

[解決済み] Pythonのトリプルクォートされた複数行の文字列の余分なインデントを削除するには?

2023-05-08 08:40:16

質問

Pythonのエディタで、ユーザーがスクリプトやコードを入力し、それが裏でメインメソッドに入れられ、同時にすべての行がインデントされるようなものがあります。問題は、ユーザーが複数行の文字列を持っている場合、スクリプト全体に行われたインデントが、すべてのスペースにタブを挿入することによって、文字列に影響を与えることです。問題のあるスクリプトは、次のような単純なものです。

"""foo
bar
foo2"""

ということで、mainメソッドの時は次のようになります。

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

となり、文字列には各行の先頭に余分なタブが付くようになります。

どのように解決するのですか?

つまり、私が正しく理解していれば、ユーザーが入力したものは何でも、適切にインデントして、プログラムの残りの部分に追加する(そして、そのプログラム全体を実行する)のです。

ですから、ユーザー入力をプログラムに入れた後、正規表現を実行して、基本的に強制インデントを元に戻すことができるのです。次のようなものです。3 つの引用符の中で、4 つのスペース (またはタブ) が続くすべての "new line markers" を "new line marker" だけに置き換えます。