我有一个文本文件,其中包含以下行
PIXEL_SCALE 1.0 # size of pixel in arc
要将其中的 1.0 替换为 0.3,
我尝试通过 python 脚本中的 subprocess.call 使用 sed 。
遵循 sed regex 命令可以在 shell 中完美运行。
sed -i 's/^\(PIXEL_SCALE\s*\)\([0-9]*\.[0-9]*\)/\10.3/' filename.txt
但等效的 subprocess.call 命令给出了以下错误。
subprocess.call(['sed','-i',"'s/^\(PIXEL_SCALE\s*\)\([0-9]*\.[0-9]*\)/\10.3/'",'filename.txt'])
sed: -e expression #1, char 1: unknown command: `''
我尝试通过在字符串前加上 r 前缀将字符串转换为原始字符串,并且还尝试了 .encode("UTF-8")。但他们没有任何效果。
这里可能出了什么问题?
Thanks
'
引号是 shell 使用的分隔符。由于您不使用 shell,因此您的正则表达式中不需要它们:
subprocess.call(['sed','-i',r"s/^\(PIXEL_SCALE\s*\)\([0-9]*\.[0-9]*\)/\10.3/",'filename.txt'])
# ^^ ^
此外,我还使用了一个原始字符串 https://docs.python.org/2/reference/lexical_analysis.html#string-literals (r"...."
)以防止 python 解释反斜杠转义序列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)