Equivalent Python pour imploser PHP?

103

Existe-t-il un équivalent pour l'implosion de PHP en Python? J'ai lu et divisé un ensemble de mots délimités, et maintenant je veux les trier dans des ordres aléatoires et imprimer les mots avec des espaces entre les deux.

implode - Joindre les éléments du tableau avec une chaîne

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

pythonien29033
la source

Réponses:

185

Utilisez la méthode de jointure de chaînes .

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

Vous pouvez joindre n'importe quel itérable (pas seulement celui listutilisé ici) et bien sûr, vous pouvez utiliser n'importe quelle chaîne (pas seulement ' ') comme délimiteur.

Si vous voulez un ordre aléatoire comme vous l'avez dit dans votre question, utilisez la lecture aléatoire .

Matthias
la source
join () fonctionne très bien si vous avez un tableau de chaînes, mais si un membre du tableau est int au lieu d'une chaîne, vous obtiendrez une TypeError, l'implode de php ne le fait pas, même en mode strict = / <?php declare(strict_types=1);var_dump(implode("glue",["startString",(int)123,"endString"]));vous donne string(31) "startStringglue123glueendString"mais en python faire "glue".join(["startString",123,"endString"]);vous donneTypeError: sequence item 1: expected str instance, int found
hanshenrik
14

Ok, je viens de trouver une fonction qui fait ce que je voulais faire;

J'ai lu dans un fichier avec des mots dans un format comme: Jack/Jill/my/kill/name/bucket

Je l'ai ensuite divisé en utilisant la split()méthode et une fois que j'ai eu le mot dans une liste, j'ai concaténé les mots avec cette méthode:

concatenatedString = ' - '.join(myWordList)
# ie: delimeter.join(list)
pythonien29033
la source
3
Je ne comprends pas pourquoi vous voulez vous joindre. Vous avez d'abord une ligne, vous la divisez en caractères, puis la rejoignez. Pourquoi ne remplacez-vous pas les personnages en premier lieu? (Vous manquez la partie `` aléatoire '' dans votre propre réponse, n'est plus pertinente?)
RvdK