通过Python脚本发布Perl Regex

2024-09-30 00:36:47 发布

您现在位置:Python中文网/ 问答频道 /正文

在unix上运行python脚本时遇到了一个问题,该脚本调用perl命令,该命令使用regex替换属性文件中的密码。你知道吗

var= folderHome+"/conf/cs.properties"
process = subprocess.call(["perl", "-i", "-pe", "s/(?<=password=)\w+/\1mynewordtesting/", var])

当使用下面的python段时,它会很好地替换密码,但会添加一个'SOH'字符,如下所示

'SOH' Problem

但是直接在命令行中使用相同的命令将正确地替换密码


Tags: 文件命令脚本密码属性varconfunix
1条回答
网友
1楼 · 发布于 2024-09-30 00:36:47

\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])

相关问题 更多 >

    热门问题