17

Had two answers and some comments, mentioned another question, but all had not provided REASON, why Python did this changes? such as '/b' is '/x08' is just the result, but why? Cheers.

I try to add this path"F:\big data\Python_coding\diveintopython-5.4\py" into sys.path, therefore, the code under it could be imported directly.

after using : sys.path.append('F:\big data\Python_coding\diveintopython-5.4\py')

I found I had this path inside sys.path: 'F:\x08ig data\Python_coding\diveintopython-5.4\py'

I then tested using the following code:mypath1='F:\big data\bython_coding\aiveintopython-5.4\ry'

the mypath1 now is : 'F:\x08ig data\x08ython_coding\x07iveintopython-5.4\ry'

all the '\b' changed into '\x08' and '\a' changed into '\x07'

I searched for a while, but still can not find the reason, could you please check it out and any feedback or help will be appropriated. Many thanks.

T.C
  • 171
  • 1
  • 1
  • 5

2 Answers2

16

Your strings are being escaped. Check out the docs on string literals:

The backslash () character is used to escape characters that otherwise have a special meaning, such as newline, backslash itself, or the quote character. String literals may optionally be prefixed with a letter r' orR'; such strings are called raw strings and use different rules for backslash escape sequences.

This is a historical usage dating from the early 60s. It allows you to enter characters that you're not otherwise able to enter from a standard keyboard. For example, if you type into the Python interpreter:

print "\xDC"

...you'll get Ü. In your case, you have \b - representing backspace - which Python displays in the \xhh form, where hh is the hexadecimal value for 08. \a is the escape sequence for the ASCII bell: try print "\a" with your sound on and you should hear a beep.

Matthew Trevor
  • 14,354
  • 6
  • 37
  • 50
  • Many thanks for your insightful reply, I will spend time t understand the link you provided. – T.C Apr 09 '14 at 11:45
10

Escape sequence \a, \b is equivalnt to \x07, \x08.

>>> '\a'
'\x07'
>>> '\b'
'\x08'

You should escape \ itself to represent backslash literally:

>>> '\\a'
'\\a'
>>> '\\b'
'\\b'

or use raw string literals:

>>> r'\a'
'\\a'
>>> r'\b'
'\\b'
falsetru
  • 357,413
  • 63
  • 732
  • 636