On 23/03/13 15:22, Lolo Lolo wrote:
You can use bytes() function:

bytes('%d' % 3,  'utf-8')
b'3'

-m

thanks this has solved everything. can i ask if this is an issue only in python 
3 where sockets cant send strings? the docs state the argument is a string, but 
i believe that was for 2.7. I knew nothing about b'' or bytes() before today. 
thanks again


The thing to remember is that there are two types of strings:

byte strings
text strings (also known as Unicode)


In Python 2, strings created with "" are called "strings", and even though they 
are actually byte strings, Python tries really hard to pretend that they are text strings.

In Python 2, strings created with u"" are called "unicode strings". They are exactly the 
same as the strings you create in Python 3 using "" without the U.

In Python 3, strings created with b"" are called "bytes", for "byte strings", and Python 
no longer tries to pretend that they are text strings. (Python 2.7 also understands b"" syntax for creating 
byte strings.)

Summary:


* I want a series of bytes, e.g. for sending to a socket

  - use "abc" or b"abc" in Python 2
  - use b"abc" in Python 3

* I want a series of text characters:

  - use u"abc" in Python 2
  - use "abc" in Python 3

* I don't care what I get:

  - use "abc" in Python 2 or 3, and so long as you don't
    try to do anything too complicated, it will just work.



Does this help?



--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to