将其中包含 \\n 的文本替换为真正的 \\n 输出

新手上路,请多包涵

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

设置这个之后

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

它给我带来了这样的东西

'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'

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

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

所以我希望 \n 实际上是一个新行,而不仅仅是向我显示“\n”字符串。

原文由 agusbava 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 835
2 个回答

如果您在 Python 解释器中运行它,解释器的常规行为是将换行符显示为“\n”而不是实际的换行符,因为这样更容易调试输出。如果你想在解释器中获得实际的换行符,你应该 print 你得到的字符串。

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

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

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

原文由 Pedro Castilho 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

 print(f"{yourStringHere}")

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

原文由 Daniel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题