Python-Äquivalent für PHPs implodieren?

103

Gibt es ein Äquivalent für die Implodierung von PHP in Python? Ich habe eine Reihe von abgegrenzten Wörtern eingelesen und aufgeteilt, und jetzt möchte ich sie in zufälliger Reihenfolge sortieren und die Wörter mit Leerzeichen dazwischen ausdrucken.

implode - Verbinden Sie Array-Elemente mit einer Zeichenfolge

http://php.net/manual/en/function.implode.php

pythonian29033
quelle

Antworten:

185

Verwenden Sie die Zeichenfolgen- Join-Methode .

print ' '.join(['word1', 'word2', 'word3'])

Sie können eine beliebige iterable (nicht nur die listhier verwendete) und natürlich eine beliebige Zeichenfolge (nicht nur ' ') als Trennzeichen verwenden.

Wenn Sie eine zufällige Reihenfolge wünschen, wie Sie in Ihrer Frage gesagt haben, verwenden Sie Shuffle .

Matthias
quelle
join () funktioniert hervorragend, wenn Sie ein Array von Strings haben, aber wenn ein Mitglied des Arrays int anstelle eines Strings ist, erhalten Sie einen TypeError, der implode von php macht das nicht, selbst im strengen Modus = / <?php declare(strict_types=1);var_dump(implode("glue",["startString",(int)123,"endString"]));gibt Ihnen string(31) "startStringglue123glueendString"aber in Python "glue".join(["startString",123,"endString"]);gibt dir das TunTypeError: sequence item 1: expected str instance, int found
Hanshenrik
14

Okay, ich habe gerade eine Funktion gefunden, die das tut, was ich tun wollte.

Ich lese in einer Datei mit Wörtern in einem Format wie: Jack/Jill/my/kill/name/bucket

Ich habe es dann mit der split()Methode aufgeteilt und sobald ich das Wort in einer Liste hatte, habe ich die Wörter mit dieser Methode verkettet:

concatenatedString = ' - '.join(myWordList)
# ie: delimeter.join(list)
pythonian29033
quelle
3
Ich verstehe nicht, warum du mitmachen willst. Zuerst haben Sie eine Linie, teilen sie in Zeichen auf und verbinden sie dann erneut. Warum ersetzen Sie die Zeichen nicht zuerst? (Sie vermissen den 'zufälligen' Teil in Ihrer eigenen Antwort, der nicht mehr relevant ist?)
RvdK