在unix框上运行python脚本时遇到问题,该框调用perl命令,该命令使用正则表达式替换属性文件中的密码。
var= folderHome+"/conf/cs.properties"
process = subprocess.call(["perl", "-i", "-pe", "s/(?<=password=)\w+/\1mynewordtesting/", var])
当使用下面的python片段时,它会很好地替换密码,但会添加一个&#39; SOH&#39; char如下所示
但是直接在命令行中使用相同的命令将正确替换密码
答案 0 :(得分:0)
将\1
转移到\\1
; Python将其视为十六进制字节01
的转义序列:
>>> '\1'
'\x01'
所以:
process = subprocess.call([
"perl", "-i", "-pe",
"s/(?<=password=)\w+/\\1mynewordtesting/", var])
或者,使用原始字符串文字;然后忽略转义序列:
process = subprocess.call([
"perl", "-i", "-pe",
r"s/(?<=password=)\w+/\1mynewordtesting/", var])