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

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 .


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)

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
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.