How do I do this in Python 3 (string.join())?

MRAB python at mrabarnett.plus.com
Wed Aug 26 10:00:27 EDT 2020


On 2020-08-26 14:22, Chris Green wrote:
> I have the following line in Python 2:-
> 
>      msgstr = string.join(popmsg[1], "\n")      # popmsg[1] is a list containing the lines of the message
> 
> ... so I changed it to:-
> 
>      s = "\n"
>      msgstr = s.join(popmsg[1])      # popmsg[1] is a list containing the lines of the message
> 
> However this still doesn't work because popmsg[1] isn't a list of
> strings, I get the error:-
> 
>      TypeError: sequence item 0: expected str instance, bytes found
> 
> So how do I do this?  I can see clumsy ways by a loop working through
> the list in popmsg[1] but surely there must be a way that's as neat
> and elegant as the Python 2 way was?
> 
In Python 3, bytestring literals require the 'b' prefix:

     msgstr = b"\n".join(popmsg[1])


More information about the Python-list mailing list