Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

the reason: python string assignments accidentally change '\b' into '\x08' and '\a' into '\x07', why Python did this?

Tags:

python

string

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.

like image 871
T.C Avatar asked Apr 09 '14 11:04

T.C


People also ask

What is '\ x0c?

\r – the carriage return. \x0b – the vertical tab. It can be also expressed as \v . \x0c – the form feed character that forces a printer to move the next sheet of paper. It's also expressed as \f .

How do strings work in Python?

Strings are Arrays Like many other popular programming languages, strings in Python are arrays of bytes representing unicode characters. However, Python does not have a character data type, a single character is simply a string with a length of 1. Square brackets can be used to access elements of the string.

How do you create a new string in Python?

How to create a string in Python? Strings can be created by enclosing characters inside a single quote or double-quotes. Even triple quotes can be used in Python but generally used to represent multiline strings and docstrings.


2 Answers

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.

like image 119
Matthew Trevor Avatar answered Oct 16 '22 20:10

Matthew Trevor


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'
like image 40
falsetru Avatar answered Oct 16 '22 20:10

falsetru