Join strings - very simple Q.

Duncan Booth duncan.booth at invalid.invalid
Sat Mar 24 14:20:04 EDT 2007


"Diez B. Roggisch" <deets at nospam.web.de> wrote:

> 7stud schrieb:
>> When I try the latter example, I get an error:
>> 
>> lst = ["hello", "world"]
>> print unicode.join(u"\u00d7", lst)
>> 
>> Traceback (most recent call last):
>>   File "test1.py", line 2, in ?
>>     print unicode.join(u"\u00d7", lst)
>> UnicodeEncodeError: 'ascii' codec can't encode character u'\xd7' in
>> position 5: ordinal not in range(128)
> 
> You are mixing unicode with bytestrings here. make "hello" u"hello", 
> same for "world".
> 
Sorry Diez, wrong answer. A unicode separator will cause all the strings 
being joined to be decoded using the default encoding (which could cause 
problems with non-ascii characters in the decoded strings), but the problem 
here is with encoding, not decoding.

7stud: the problem isn't the join, it is printing the string on your 
terminal which is the problem. Try just:

   print u"\u00d7"

and you'll get the same problem. Or:

 lst = ["hello", "world"]
 joined = unicode.join(u"\u00d7", lst)

will work, but you'll still have problems printing the result.

If you try it using a Python interpreter with an appropriate output 
encoding it will work (idle can handle it on my system, but the DOS prompt 
with its default codepage cannot).



More information about the Python-list mailing list