2016-11-30 2 views
3

Wie drucke ich eine mehrzeilige Zeichenfolgenvariable ohne den Einzug auf die Konsole?Mehrzeilige Zeichenfolgenvariable ohne Einzug drucken

Im Moment habe ich dies ohne Erfolg versucht:

# Grid. 
grid = """rnbqkbnr 
      pppppppp 
      ******** 
      ******** 
      ******** 
      PPPPPPPP 
      RNBQKBNR""" 

# Show grid. 
print(grid) 

Der Ausgang ist die folgende:

rnbqkbnr 
      pppppppp 
      ******** 
      ******** 
      ******** 
      PPPPPPPP 
      RNBQKBNR 

Dies ist der Ausgang, wo ich suche:

rnbqkbnr 
pppppppp 
******** 
******** 
******** 
PPPPPPPP 
RNBQKBNR 
+2

Cross-Site-Betrogene: http://codereview.stackexchange.com/q/60366 – jonrsharpe

+0

Dies ist sehr ähnlich zu doc-Strings, für die es eine [allgemeinen Algorithmus] (https: // www.python.org/dev/peps/pep-0257/#handling-docstring-indentation) für das Parsen der Identität. Sie können den Code von dort wiederverwenden. – poke

Antwort

2
print('\n'.join(grid.split())) 

, wenn Sie Innenräume in Ihren Linien haben, die Sie behalten mögen:

for line in grid.splitlines(): 
    print(line.strip()) 
+2

Dies ist eine befriedigende Lösung für das spezifische Beispiel des OP, aber pass auf: Wenn das Textraster interne Leerzeichen enthält, werden diese auch geteilt "foo bar \ n aaaaaaa \ n bbbbbbb" 'setzt" foo "und" bar "auf separate Zeilen. – Kevin

+0

Danke, nice one. – maartenpaauw

+1

Beachten Sie, dass dies auch verschachtelte Einrückungen beseitigt, die nicht wünschenswert sein könnten. – poke

1

Einfach nicht innerhalb von """:

einrücken
# Grid. 
grid = """rnbqkbnr 
pppppppp 
******** 
******** 
******** 
PPPPPPPP 
RNBQKBNR""" 

# Show grid. 
print(grid) 

Funktioniert wie erwartet.

+1

Ja, das ist die einfachste Lösung. Und wenn Sie möchten, dass die Zeile "rnb ..." gut zu den übrigen Zeilen in Ihrer Quelle passt, können Sie 'grid =" "" \ 'und dann' rnb ... 'in die nächste Zeile setzen. – Kevin

+0

Vielen Dank für Ihre Antwort und Zeit, aber ich möchte diese Lösung vermeiden – maartenpaauw

2

Try this:

# Grid. 
grid = """\ 
rnbqkbnr 
pppppppp 
******** 
******** 
******** 
PPPPPPPP 
RNBQKBNR""" 

# Show grid. 
print(grid) 

Putting \ am Ende einer Zeile entfernt unnötigen Newline-Zeichen .

+0

Danke, auch eine schöne passende Lösung. – maartenpaauw

0

könnte auch versuchen re Modul und entfernen führende Leerzeichen für alle Linien:

grid = """rnbqkbnr 
      pppppppp 
      ******** 
      ******** 
      ******** 
      PPPPPPPP 
      RNBQKBNR""" 
​ 
import re 
print(re.sub('^\s+', '', grid, flags=re.MULTILINE)) 

rnbqkbnr 
pppppppp 
******** 
******** 
******** 
PPPPPPPP 
RNBQKBNR 
1

Verwendung textwrap.dedent(text).

>>> from textwrap import dedent 
>>> dedent("""\ 
    rnbqkbnr 
    pppppppp 
    ******** 
    ******** 
    ******** 
    PPPPPPPP 
    RNBQKBNR""") 
'rnbqkbnr\npppppppp\n********\n********\n********\nPPPPPPPP\nRNBQKBNR' 
>>> print(_) 
rnbqkbnr 
pppppppp 
******** 
******** 
******** 
PPPPPPPP 
RNBQKBNR 
1
def unindent(string): 
    return ''.join(map(str.lstrip, string.splitlines(1))) 

# Grid. 
grid = """rnbqkbnr 
      pppppppp 
      ******** 
      ******** 
      ******** 
      PPPPPPPP 
      RNBQKBNR""" 

# Show grid. 
print(unindent(grid))