使用Python进行编码时,有时您希望在函数中使用多行字符串,例如
def f():
s = """\
Line 1
Line 2
Line 3"""
(反斜杠是删除前导的换行符)
s
但是,如果您尝试实际打印出来,则会得到
Line 1
Line 2
Line 3
那根本不是我们想要的!领先的空白太多了!
挑战
给定一个仅由字母数字字符,空格和换行符组成的多行字符串,请从每行的开头删除所有公共空格。保证每行至少有一个非空格字符,并且没有尾随空格。输出可能没有多余的空格,无论是在整个输出之前还是之后,还是在单独的行之后(单个可选的尾随换行符除外)。
输入可以通过STDIN或函数自变量,输出可以通过STDOUT或函数返回值。您不能使用任何旨在使多行字符串变短或执行此确切任务的内置程序,例如Python的textwrap.dedent
。
这是代码高尔夫球,因此以最少字节为单位的解决方案将获胜。有标准漏洞。
测试用例
"a" -> "a"
" abc" -> "abc"
" abc\n def\n ghi" -> " abc\ndef\n ghi"
" a\n b\n c" -> "a\nb\nc"
" a\n b\n c\nd" -> " a\n b\n c\nd"
" a b\n c d\n e f" -> "a b\n c d\n e f"
例如,最后一个测试用例是
a b
c d
e f
并在除去前导空格后应如下所示:
a b
c d
e f