我的意见如下
Type combinational function (A B)
希望输出是
Type combinational
function (A B)
我使用了代码和它的工作原理
sed 's/\([^ ]* [^ ]*\) \(function.*\)/\1\n\2/' Input_file
当我在python脚本中使用os.system
和subprocess
使用这段代码时,会给我带来错误。
如何在python脚本中执行这个sed
。或者如何为上面的sed code
编写python代码。
使用的Python代码
cmd='''
sed 's/\([^ ]* [^ ]*\) \(function.*\)/\1\n\2/' Input_file
'''
subprocess.check_output(cmd, shell=True)
错误是
sed: -e expression #1, char 34: unterminated `s' command
字符串中的
\n
被Python替换为文字换行符。正如@bereal在评论中所建议的,您可以通过在脚本周围使用r'''...'''
而不是'''...'''
来避免这种情况;但是一个更好的解决方案是避免做Python本身已经做得很好的事情这比您当前的
sed
脚本稍微不严格,因为它不需要在function
标记之前正好有两个空格分隔的标记。如果你想严格一点,试试re.sub()
(切题来说,您还希望避免不必要的
shell=True
;也许可以参见Actual meaning of 'shell=True' in subprocess)相关问题 更多 >
编程相关推荐