Sneaky Wombat <joe.hrbek <at> gmail.com> writes: > > Why is python turning \x0a into a \n ? > > In [120]: h='\x0a\xa8\x19\x0b' > > In [121]: h > Out[121]: '\n\xa8\x19\x0b' > > I don't want this to happen, can I prevent it?
'h' is an ascii string. The ascii encoding for '\n' is the number(byte) 0x0A. When you type '\x0a' you are entering the ascii code directly. >>> hex(ord('\n')) '0xa' Python doesn't know that you entered the values using the '\xXX' syntax, it just knows that the string contains a byte with that value. When it prints it back out, it will print out the corresponding symbol. Any character that has a reasonable ascii representation will show up as that symbol when it (or its repr) is printed. >>> "\x61\x62\x63\x64\x65\x66" 'abcdef' If you are interested in printing the hex values, you could so something like this: >>> h = '\x0a\xa8\x19\x0b' >>> for c in h: ... print "0x%02x" % ord(c), ... 0x0a 0xa8 0x19 0x0b Matt -- http://mail.python.org/mailman/listinfo/python-list