Wie verkette (verbinde) ich Elemente in einer Liste zu einer einzelnen Zeichenfolge?

Lesezeit: 4 Minuten

Benutzer-Avatar
alvas

Wie verkette ich eine Liste von Strings zu einem einzigen String? Zum Beispiel eine Liste gegeben ['this', 'is', 'a', 'sentence']wie bekomme ich eine Zeichenfolge wie 'this-is-a-sentence'?

  • Die umgekehrte Frage: Wie teilt man eine Zeichenfolge in eine Liste von Zeichen auf?

    – Tomerikoo

    19. Januar um 14:59 Uhr

  • Siehe auch stackoverflow.com/questions/743806 zum Aufteilen einer Zeichenfolge in Wörter.

    – Karl Knechtel

    4. August um 1:30 Uhr


Benutzer-Avatar
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


  • @Löwe ' '.join(['this', 'is', 'a', 'sentence'])

    – Burhan Khalid

    7. Mai 2018 um 6:14 Uhr

Benutzer-Avatar
Aaron S

Eine generischere Methode zum Konvertieren von Python-Listen in Zeichenfolgen wäre:

>>> xs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> ''.join(map(str, xs))
'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

Benutzer-Avatar
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

Benutzer-Avatar
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 ” “.

Benutzer-Avatar
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

Benutzer-Avatar
nnnmm

Wir können auch Pythons verwenden reduzieren Funktion:

from functools import reduce

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

Benutzer-Avatar
Abhishek V

Wir können angeben, wie wir die Zeichenfolge verbinden müssen. Anstelle von ‘-‘ können wir ‘ ‘ verwenden

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

1146180cookie-checkWie verkette (verbinde) ich Elemente in einer Liste zu einer einzelnen Zeichenfolge?

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

Privacy policy