我有以下python脚本 -
import os
command = "echo '12345 Tomcat' | sed -n 's/.*\(^.[0-9]*\).*/\1/p'"
os.system(command)
打印ascii零字符 -
尝试在shell中运行此命令。它应该打印12345
。
为什么会这样?
答案 0 :(得分:4)
Python正在解释你的反斜杠。您可以改为使用“原始”Python字符串表示法:
command = r"echo '12345 Tomcat' | sed -n 's/.*\(^.[0-9]*\).*/\1/p'"
或者,再次逃避反斜杠:
command = "echo '12345 Tomcat' | sed -n 's/.*\\(^.[0-9]*\\).*/\\1/p'"
答案 1 :(得分:2)
\1
是一个转义序列(这是你的图像实际显示的,而不是\0
)。您希望将其视为字符\
和1
,因此请在字符串前添加r
以使字符串文字为“原始”:
command = r"echo '12345 Tomcat' | sed -n 's/.*\(^.[0-9]*\).*/\1/p'"