简体   繁体   中英

Replacing a text with \n in it, with a real \n output

I am trying to get a config from a juniper router and I have the following problem:

After setting this

stdin, stdout, stderr = client1.exec_command('show configuration interfaces %s' % SID)
 CONFIG = stdout.read()
 print CONFIG

It brings me something like these

'description El_otro_Puerto_de_la_Routing-instance;\nvlan-id 309;\nfamily inet {\n    mtu 1600;\n    address 10.100.10.10/24;\n}\n'

and the problem is that I want to receive that information in this format:

'description El_otro_Puerto_de_la_Routing-instance;
 nvlan-id 309;
 nfamily inet {
  mtu 1600;
  address 10.100.10.10/24;
 }

So I want the \\n to actually be a new line, and not just to show me the "\\n" string.

If you're running this in the Python interpreter, it is the regular behavior of the interpreter to show newlines as "\\n" instead of actual newlines, because it makes it easier to debug the output. If you want to get actual newlines within the interpreter, you should print the string you get.

If this is what the program is outputting (ie: You're getting newline escape sequences from the external program), you should use the following:

OUTPUT = stdout.read()
formatted_output = OUTPUT.replace('\\n', '\n').replace('\\t', '\t')
print formatted_output

This will replace escaped newlines by actual newlines in the output string.

An alternative to what you want is splitting your string into a list of strings (per line).

mystr = 'a\nb\nc'
mystr = mystr.split(sep='\n')
print(mystr)
#this will be your print output:['a', 'b', 'c']
for s in mystr:
    print(s)
#your print output:
#a
#b
#c

这也有效:

CONFIG = """{}""".format(CONFIG)

In python 3+ , the best way to interpret all escape characters is:

print(f"{yourStringHere}")

This uses f-strings which, in my opinion, is probably the most elegant way to solve this issue.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM