133

Is there an equivalent for PHP's implode in Python? I've read in and split up a set of delimited words, and now I want to sort them out in random orders and print the words out with spaces in between.

implode — Join array elements with a string

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

JS.
  • 14,781
  • 13
  • 63
  • 75
pythonian29033
  • 5,148
  • 5
  • 31
  • 56

2 Answers2

223

Use the strings join-method.

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

You can join any iterable (not only the list used here) and of course you can use any string (not only ' ') as the delimiter.

If you want a random order like you said in your question use shuffle.


In the comment there was the question why Python throws an error if you do "glue".join(["startString", 123, "endString"]). join operates on an iterable of strings. There is no implicit type conversion in Python.

But of course there is a solution. Just do the conversion yourself.

"glue".join(map(str, ["startString",123,"endString"]))

Matthias
  • 12,873
  • 6
  • 42
  • 48
  • 1
    join() works great if you have an array of strings, but if any member of the array is int instead of a string, you'll get a TypeError, php's implode doesn't do that, even in strict mode =/ ``` – hanshenrik Jun 01 '20 at 18:11
15

Okay I've just found a function that does what I wanted to do;

I read in a file with words in a format like: Jack/Jill/my/kill/name/bucket

I then split it up using the split() method and once I had the word into an list, I concatenated the words with this method:

concatenatedString = ' - '.join(myWordList)
# ie: delimeter.join(list)
Community
  • 1
  • 1
pythonian29033
  • 5,148
  • 5
  • 31
  • 56
  • 4
    I don't get why you want to join. First you have a line, you split it into characters and then join it again. Why don't you replace the characters in the first place? (You miss the 'random' part in your own answer, not relevant anymore?) – RvdK Nov 12 '14 at 16:51