Python 3.5 dividing lines for a multi-line string containing a backslash

How can I effectively split a multi-line string containing a backslash leading to unwanted escape characters in separate lines?

Here is an example of the input that I have in mind:

strInput = '''signalArr(0)="ASCB D\axx\bxx\fxx\nxx"
signalArr(1)="root\rxx\txx\vxx"'''

I tried this (to convert a single backslash to a double. So a backslash escape would take precedence, and the following character would be processed "normally"):

def doubleBackslash(inputString):
    inputString.replace('\\','\\\\')
    inputString.replace('\a','\\a')
    inputString.replace('\b','\\b')
    inputString.replace('\f','\\f')
    inputString.replace('\n','\\n')
    inputString.replace('\r','\\r')
    inputString.replace('\t','\\t')
    inputString.replace('\v','\\v')
    return inputString

strInputProcessed = doubleBackslash(strInput)

I would like to receive:

lineList = strInputProcessed.splitlines()

>> ['signalArr(0)="ASCB D\axx\bxx\fxx\nxx"','signalArr(1)="root\rxx\txx\vxx"']

What I got:

>> ['signalArr(0)="ASCB D\x07xx\x08xx', 'xx', 'xx"', 'signalArr(1)="root', 'xx\txx', 'xx"']
+4
source share
1 answer

Try saving your input as a raw string, then all \ n characters will be automatically escaped:

>>> var = r'''abc\n
... cba'''
>>> print var
abc\n
cba
>>> var.splitlines()
['abc\\n', 'bca']

( r '. , )

, , , , encode 'string-escape'.

>>> s = 'abc\nabc\nabc'
>>> s.encode('string-escape')
'abc\\nabc\\nabc'

, , - .

>>> s.decode('string-escape')

, , :

>>> strInput = r'''signalArr(0)="ASCB D\axx\bxx\fxx\nxx"
... signalArr(1)="root\rxx\txx\vxx"'''
>>> strInput.splitlines()
['signalArr(0)="ASCB D\\axx\\bxx\\fxx\\nxx"', 'signalArr(1)="root\\rxx\\txx\\vxx"']

\ , . , \, .

>>> s = r'\a\b\c'
>>>
>>> for c in s:
...  print c
\
a
\
b
\
c
>>> list(s)
['\\', 'a', '\\', 'b', '\\', 'c']
+4

Source: https://habr.com/ru/post/1616821/


All Articles