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'
?
Wie verkette (verbinde) ich Elemente in einer Liste zu einer einzelnen Zeichenfolge?
alvas
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 istlist.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 derstr.join
kann jede “iterierbare” Folge von Zeichenfolgen sein, nicht nur eine Liste. Das einzige, was Sinn machen würde, wäre eine eingebaute Funktionjoin(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
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
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()
dhjoin(("(",")"))
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 zweitejoin()
verbindet diese beiden Strings mit der Ausgabe des erstenjoin()
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
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 ” “.
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
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)
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)
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