Lors du codage en Python, parfois vous voulez une chaîne multiligne dans une fonction, par exemple
def f():
s = """\
Line 1
Line 2
Line 3"""
(La barre oblique inverse consiste à supprimer une nouvelle ligne principale)
s
Cependant, si vous essayez d'imprimer , vous obtiendrez
Line 1
Line 2
Line 3
Ce n'est pas du tout ce que nous voulons! Il y a trop d'espace blanc de premier plan!
Le défi
Étant donné une chaîne multiligne composée uniquement de caractères alphanumériques, d'espaces et de retours à la ligne, supprimez tous les espaces communs au début de chaque ligne. Chaque ligne est garantie d'avoir au moins un caractère non-espace et n'aura aucun espace de fin. La sortie peut ne pas avoir d'espace blanc superflu, que ce soit avant ou après la sortie entière ou une ligne individuelle (à l'exception d'une seule nouvelle ligne de fin facultative).
L'entrée peut être via STDIN ou un argument de fonction, et la sortie peut être via STDOUT ou une valeur de retour de fonction. Vous ne pouvez pas utiliser de commandes intégrées conçues pour déduire des chaînes multilignes ou effectuer cette tâche exacte, par exemple Python textwrap.dedent
.
Il s'agit de code-golf , donc la solution dans le moins d'octets est gagnante. Des échappatoires standard s'appliquent.
Cas de test
"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"
Par exemple, le dernier cas de test est
a b
c d
e f
et devrait ressembler à ceci après avoir supprimé les espaces de tête:
a b
c d
e f