You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python传递含大括号的grep正则命令时遇KeyError问题求助

解决Python格式化shell命令时的大括号冲突问题

问题出在Python的str.format()方法会把字符串中的{}识别为格式化占位符,你用反斜杠转义大括号是无效的,format方法要求用**双大括号{{}}**来表示普通的单大括号。

修正后的命令字符串可以这样写:

# 方式1:单引号包裹命令,内部单引号转义,大括号双写转义
cmd = 'cat {0} | grep \'[0-9]{{1,3}}.[0-9]{{1,3}}.[0-9]{{1,3}}.[0-9]{{1,3}}\' | awk \'{print $4}\''.format(file_name)

# 方式2:双引号包裹命令,内部单引号无需转义,更简洁
cmd = "cat {0} | grep '[0-9]{{1,3}}.[0-9]{{1,3}}.[0-9]{{1,3}}.[0-9]{{1,3}}' | awk '{{print $4}}'".format(file_name)

关键修正点:

  • 把所有{1,3}替换成{{1,3}},format解析时会自动将{{转为单个{,}}转为单个},避免被识别为格式化占位符。
  • 补全原命令结尾awk '{print $4}'的闭合单引号,你之前的代码遗漏了结尾的转义单引号,导致语法不完整。

如果用subprocess执行命令,额外建议尽量避免shell=True(降低注入风险),但如果必须使用shell命令字符串,上述修正即可解决问题。

内容的提问来源于stack exchange,提问作者S VIJAY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:03:20