Wie konvertiere ich eine Liste in eine Zeichenfolge mit Leerzeichen in Python?


87

Wie kann ich eine Liste in Python in eine durch Leerzeichen getrennte Zeichenfolge konvertieren?

Zum Beispiel möchte ich diese Liste konvertieren:

my_list = [how,are,you]

In die Schnur "how are you"

Die Räume sind wichtig. Ich möchte nicht so werden, howareyouwie ich es bei meinem bisherigen Versuch getan habe

"".join(my_list)

18
Protip: Nicht listals Variablenname verwenden.
Tim Pietzcker

Antworten:


184
" ".join(my_list)

Sie müssen mit einem Leerzeichen verbinden, nicht mit einer leeren Zeichenfolge ...


7
Code wie dieser ist der Grund, warum ich Python mag. So einfach.
Josh

Was ist, wenn wir eine Zeichenfolge in diesem Format haben? list = ['how ', 'are ', 'you '] Wie konvertiert man diese in eine Liste?
Muhammad Taqi

@ MuhammadTaqi dann einfach das Element be4 verbinden ..." ".join([i.strip() for i in my_list)
JACK ZHANG

16

Ich werde dies als Alternative nur zum Teufel einwerfen, obwohl es im Vergleich zu " ".join(my_list)Streichern ziemlich nutzlos ist . Für Nicht-Strings (z. B. ein Array von Ints) ist dies möglicherweise besser:

" ".join(str(item) for item in my_list)

5

Für Non String können listwir das auch so machen

" ".join(map(str, my_list))

1

Um eine gewünschte Ausgabe zu erzielen, sollten wir zunächst wissen, wie die Funktion funktioniert.

Die join()in der Python-Dokumentation beschriebene Syntax für die Methode lautet wie folgt:

string_name.join(iterable)

Dinge zu beachten:

  • Es wird eine stringmit den Elementen von verkettete zurückgegeben iterable. Das Trennzeichen zwischen den Elementen ist dasstring_name .
  • Jeder Nicht-String-Wert in iterablewird einen a auslösenTypeError

Um Leerzeichen hinzuzufügen , müssen wir nur die string_namedurch eine " "oder ' 'beide ersetzen. Dies funktioniert und platziert die iterablezu verkettenden Leerzeichen .

Unsere Funktion sieht also ungefähr so ​​aus:

' '.join(my_list)

Aber was ist, wenn wir eine bestimmte Anzahl von white spaceszwischen unseren Elementen in der hinzufügen möchten iterable?

Wir müssen dies hinzufügen:

str(number*" ").join(iterable)

Hier numberwird das eine Benutzereingabe sein.

Also zum Beispiel wenn number=4.

Dann wird die Ausgabe von str(4*" ").join(my_list)sein how are you, so dass zwischen jedem Wort 4 Leerzeichen stehen.



-9

Warum fügen Sie den Elementen der Liste selbst kein Leerzeichen hinzu, z.
list = ["how ", "are ", "you "]


Sie haben diese Antwort so geschrieben , dass sie in Form eines Kommentars angemessener erscheint. Es wäre vorteilhafter, wenn Sie diese Antwort erweitern würden, um zu erklären, warum das, was Sie vorschlagen, funktioniert.
Andon M. Coleman

1
Dies ist nicht funktionsfähig in einem Fall, in dem Sie keinen Zugriff auf die Liste haben (z. B. wenn mit generiert input(a).split(b))
TheSola10

Wir sollten die internen Zeichenfolgen nicht ändern, da dies zu Platzverlust führt
Deepak Yadav,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.