Wie man Elemente in einer Liste zu einer einzelnen Zeichenfolge verkettet (verbindet).

Lesezeit: 5 Minuten

Benutzeravatar von alvas
alvas

Wie verkette ich eine Liste von Strings zu einem einzigen String?

Zum Beispiel gegeben ['this', 'is', 'a', 'sentence']wie bekomme ich "this-is-a-sentence"?


Für den Umgang mit ein paar Saiten getrennte Variablensiehe Wie füge ich in Python eine Zeichenfolge an eine andere an?.

Für den umgekehrten Vorgang – Erstellen einer Liste aus einer Zeichenfolge – siehe Wie teile ich eine Zeichenfolge in eine Liste von Zeichen auf? oder Wie teile ich eine Zeichenfolge in eine Liste von Wörtern auf? wie angemessen.

Benutzeravatar von Burhan Khalid
Burhan Khalid

Verwenden str.join:

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'

  • Nicht verstanden, was soll das ‘-‘ auf der linken Seite sein??

    – Lawrence DeSouza

    2. April 2014 um 23:46 Uhr

  • @LawrenceDeSouza Die Zeichenfolge, die Sie verbinden möchten; siehe die Dokumentationoder diese Antwort, die etwas mehr ins Detail geht.

    – Burhan Khalid

    6. April 2014 um 6:53 Uhr


  • Ich habe es erwartet sentence.join(" ") auch funktionieren, da der umgekehrte Betrieb ist list.split(" "). Irgendeine Idee, ob dies zu Pythons Methoden für Listen hinzugefügt wird?

    – Wouter Thielen

    23. August 2015 um 10:02 Uhr

  • @Wouter, das wird es nicht. Einerseits können nur Listen von Strings verbunden werden; Also list.join wäre für eine willkürliche Aufzählung ungeeignet. Andererseits ist das Argument der str.join kann jede “iterierbare” Folge von Zeichenfolgen sein, nicht nur eine Liste. Das einzige, was Sinn machen würde, wäre eine eingebaute Funktion join(list, sep); es gibt eine in der (im Grunde veraltet) string Modul, wenn Sie es wirklich wollen.

    – alexis

    7. September 2015 um 22:28 Uhr


  • @alexis Das macht in der Tat Sinn, dass eine Python-Liste Elemente gemischter Typen enthalten kann und nicht immer verknüpfbar ist. Vielen Dank!

    – Wouter Thielen

    12. September 2015 um 7:09 Uhr

Benutzeravatar von Aaron S
Aaron S

Eine allgemeinere Möglichkeit, Python-Listen in Zeichenfolgen zu konvertieren, wäre:

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str="".join(map(str, my_lst))
>>> print(my_lst_str)
12345678910

  • Warum ist Listenverständnis erforderlich, wenn die Eingabe eine Zeichenfolge ist? Auch map(str, my_lst) würde reichen ohne die liste aufzuzählen =)

    – Alvas

    1. Dezember 2015 um 8:58 Uhr

  • Die meisten Antworten auf diese Frage beziehen sich auf den Fall, dass die Liste Zeichenfolgen enthält. Mine ist eine generische Methode, um Listen in Strings umzuwandeln. In meinem Beispiel ist die Liste vom Typ int aber es könnte jeder Typ sein, der als String dargestellt werden kann.

    – Aaron S

    2. Dezember 2015 um 1:02 Uhr


  • Darüber hinaus wäre map auch nützlich, wenn es mit einer Lambda-Funktion verwendet wird. Zum Beispiel ' '.join(map(lambda x: ' $'+ str(x), my_lst)) würde zurückkehren '$1 $2 $3 $4 $5 $6 $7 $8 $9 $10'

    – ScottMcC

    22. Juni 2017 um 3:17 Uhr


  • Das Hinzufügen einer Karte hilft tatsächlich bei Datentypen außer Zeichenfolgen. Groß!

    – Apfeljunge

    28. Februar 2019 um 7:55 Uhr

Benutzeravatar von Wallebot
Wallebot

Für Anfänger ist es sehr nützlich zu wissen, warum Join eine String-Methode ist.

Es ist am Anfang sehr seltsam, aber danach sehr nützlich.

Das Ergebnis von join ist immer ein String, aber das zu verbindende Objekt kann von vielen Typen sein (Generatoren, Liste, Tupel usw.).

.join ist schneller, da Speicher nur einmal zugewiesen wird. Besser als klassische Verkettung (siehe erweiterte Erklärung).

Sobald Sie es gelernt haben, ist es sehr bequem und Sie können Tricks wie diesen anwenden, um Klammern hinzuzufügen.

>>> ",".join("12345").join(("(",")"))
Out:
'(1,2,3,4,5)'

>>> list = ["(",")"]
>>> ",".join("12345").join(list)
Out:
'(1,2,3,4,5)'

  • kann jemand erklären, was das zweite join() dh join(("(",")")) tut? es ist wie magie

    – kryanbhu

    12. November 2020 um 7:17 Uhr

  • ("(",")") ist ein Tupel aus zwei Strings – die offene Klammer "(" und die schließende Klammer ")". Also das zweite join() verbindet diese beiden Strings mit der Ausgabe des ersten join() als Trennzeichen (d. h. '1,2,3,4,5').

    – Zepmann

    18. Februar 2021 um 16:47 Uhr


  • Ist das richtig? „Das Ergebnis von Join ist immer eine Zeichenkette, aber das zu verbindende Objekt kann viele Typen haben (Generatoren, Liste, Tupel usw.).“ Die Antwort von Aaron S legt nahe, dass dies nicht wahr ist. Sie müssen map(str, ) verwenden, wenn die Liste andere Typen enthält.

    – O’Rooney

    28. März um 21:42 Uhr

  • @O’Rooney die Antwort sagt, dass Sie können .join Listen, Tupel oder Generatoren, die verschiedene Arten von Sammlungen sind, aber nur Zeichenfolgen enthalten sollten.

    – Boris Werchowskij

    16. August um 18:12 Uhr

Benutzeravatar von SilentVoid
SilentVoid

Aus der Zukunft bearbeiten: Bitte verwenden Sie die Antwort unten nicht. Diese Funktion wurde in Python 3 entfernt und Python 2 ist tot. Selbst wenn Sie noch Python 2 verwenden, sollten Sie Python 3-fähigen Code schreiben, um das unvermeidliche Upgrade zu vereinfachen.


Obwohl die Antwort von @Burhan Khalid gut ist, denke ich, dass sie so verständlicher ist:

from str import join

sentence = ['this','is','a','sentence']

join(sentence, "-") 

Das zweite Argument für join() ist optional und standardmäßig ” “.

Benutzeravatar von mounirboulwafa
mounirboulwafa

list_abc = ['aaa', 'bbb', 'ccc']

string = ''.join(list_abc)
print(string)
>>> aaabbbccc

string = ','.join(list_abc)
print(string)
>>> aaa,bbb,ccc

string = '-'.join(list_abc)
print(string)
>>> aaa-bbb-ccc

string = '\n'.join(list_abc)
print(string)
>>> aaa
>>> bbb
>>> ccc

Benutzeravatar des Blechmanns
der Blechmann

Wir können auch Pythons verwenden reduce Funktion:

from functools import reduce

sentence = ['this','is','a','sentence']
out_str = str(reduce(lambda x,y: x+"-"+y, sentence))
print(out_str)

Benutzeravatar des Blechmanns
der Blechmann

Wir können angeben, wie wir die Zeichenfolge verbinden. Anstatt von '-'wir können benutzen ' ':

sentence = ['this','is','a','sentence']
s=(" ".join(sentence))
print(s)

1400180cookie-checkWie man Elemente in einer Liste zu einer einzelnen Zeichenfolge verkettet (verbindet).

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy