python命令在列表中格式化Ubuntu命令

python命令在列表中格式化Ubuntu命令,python,string,string-formatting,Python,String,String Formatting,这是这个ubuntu命令的格式设置egrep-v“usernameshere” 在python中,如下所示 userfilter = ["egrep", "-v", "\"{filter}\"".format(filter=filteruser)] 为什么这样做: 我将它传递给子进程,并从python执行命令 现在,我想为这个命令完成同样的操作 awk '{gsub("admin","");print}' 我尝试了下面的一个,但没有工作,一些语法错误 尝试1 userfilter=["awk

这是这个ubuntu命令的格式设置egrep-v“usernameshere” 在python中,如下所示

userfilter = ["egrep", "-v", "\"{filter}\"".format(filter=filteruser)]
为什么这样做: 我将它传递给子进程,并从python执行命令

现在,我想为这个命令完成同样的操作

awk '{gsub("admin","");print}'
我尝试了下面的一个,但没有工作,一些语法错误

尝试1

userfilter=["awk","\'{gsub({filter},\"\");print}\'".format(filter=filteruser)] 
尝试2次

userfilter=["awk","\'{gsub({filter}.format(filter=filteruser),\"\");print}\'"]
错误:

尝试1个错误:

userfilter=["awk","\'{gsub({filter},\"\");print}\'".format(f‌​ilter=filteruser)] KeyError: 'gsub({filter},"");print'
尝试2个错误:

awk: 1: unexpected character '.'
awk: line 1: extra ')'

所以基本上,使用多个花括号会给您带来语法问题。只需使用双花括号即可打印字符串中的实际花括号

userfilter=["awk","\'{{gsub({filter},\"\");print}}\'".format(filter=filteruser)]
格式字符串包含由大括号包围的“替换字段” {}. 大括号中不包含的任何内容都被视为文字 文本,该文本将原封不动地复制到输出中。如果你需要包括 文本中的大括号字符,可以通过加倍进行转义: {{和}}

我不确定您是如何遇到第二个错误的,因为当我将它复制粘贴到我的终端时,我没有得到错误,只是得到一个字符串文本

>>> userfilter=["awk","\'{gsub({filter}.format(filter=filteruser),\"\");print}\'"]
>>> userfilter
['awk', '\'{gsub({filter}.format(filter=filteruser),"");print}\'']

您遇到的具体语法错误是什么?
userfilter=[“awk”,“\'{gsub({filter},\“\”);print}\'”。format(filter=filteruser)]keyrorm:'gsub({filter},”;打印“
在第一种情况下,我假设您在使用多个花括号时遇到问题。试试这个
userfilter=[“awk”,“\'{gsub(“+filteruser+”,\“\”);print}\'”]
这是对您问题的一个很好的回答。当我在子流程中使用它并运行它时,会出现错误,如果我们只检查文档状态的变量,它显然不会运行,如果要在文本中包含大括号字符,只需使用双大括号即可
userfilter=[“awk”,“\'{gsub({filter}.format(filter=filteruser),\”;“print}}}\'”]
不起作用的
awk:1:意外字符“””awk:1行:在|