用真实的\ n输出替换其中带有\ n的文本

agu*_*ava 4 python blank-line juniper

我正在尝试从杜松路由器获取配置,但是我遇到以下问题:

设置后

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

它带给我像这样的东西

'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'
Run Code Online (Sandbox Code Playgroud)

问题是我想以这种格式接收该信息:

'description El_otro_Puerto_de_la_Routing-instance;
 nvlan-id 309;
 nfamily inet {
  mtu 1600;
  address 10.100.10.10/24;
 }
Run Code Online (Sandbox Code Playgroud)

因此,我希望\ n实际上是换行符,而不仅仅是显示“ \ n”字符串。

Ped*_*lho 10

如果您在Python解释器中运行此命令,则解释器的常规行为是将换行符显示为“ \ n”,而不是实际的换行符,因为这样可以更轻松地调试输出。如果要在解释器中获取实际的换行符,则应print获取字符串。

如果这是程序输出的内容(即:您正在从外部程序获取换行符转义序列),则应使用以下命令:

OUTPUT = stdout.read()
formatted_output = OUTPUT.replace('\\n', '\n')
print formatted_output
Run Code Online (Sandbox Code Playgroud)

这将用输出字符串中的实际换行符替换转义的换行符。

  • 永远不要在不受信任的输入上运行 eval()。 (3认同)

Dan*_*ond 8

在 python 3+ 中,解释所有转义字符的最佳方法是:

print(f"{yourStringHere}")
Run Code Online (Sandbox Code Playgroud)

这使用了f 字符串,在我看来,这可能是解决这个问题的最优雅的方法。