Equivalente Python para implodir do PHP?

103

Existe um equivalente para implodir do PHP em Python? Li e divido um conjunto de palavras delimitadas e agora quero classificá-las em ordens aleatórias e imprimir as palavras com espaços entre elas.

implode - Une elementos da matriz com uma string

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

pythonian29033
fonte

Respostas:

185

Use o método de junção de strings .

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

Você pode juntar qualquer iterável (não apenas o listusado aqui) e, claro, você pode usar qualquer string (não apenas' ' ) como delimitador.

Se você quiser uma ordem aleatória como disse em sua pergunta, use o shuffle .

Matthias
fonte
join () funciona muito bem se você tiver um array de strings, mas se qualquer membro do array for int em vez de um string, você obterá um TypeError, o implode do php não faz isso, mesmo em modo estrito = / <?php declare(strict_types=1);var_dump(implode("glue",["startString",(int)123,"endString"]));dá a você string(31) "startStringglue123glueendString"mas em python, fazer "glue".join(["startString",123,"endString"]);dá a vocêTypeError: sequence item 1: expected str instance, int found
hanshenrik 01 de
14

Ok, acabei de encontrar uma função que faz o que eu queria fazer;

Eu li em um arquivo com palavras em um formato como: Jack/Jill/my/kill/name/bucket

Em seguida, divido usando o split()método e uma vez que tinha a palavra em uma lista, concatenou as palavras com este método:

concatenatedString = ' - '.join(myWordList)
# ie: delimeter.join(list)
pythonian29033
fonte
3
Eu não entendo porque você quer se juntar. Primeiro você tem uma linha, você a divide em caracteres e depois a junta novamente. Por que você não substitui os personagens em primeiro lugar? (Você perdeu a parte 'aleatória' em sua própria resposta, não é mais relevante?)
RvdK