python - sed中的变量替换通过python执行
问题描述
下面是我的 sed 命令:
sed "s/N([0-9]*)/sum('\1')/g" old.txt > new.txt
在 bash 终端中工作正常
但是下面的python代码不执行:-
file1=old.txt
file2.new.txt
sed_cmd = 'sed "s/0x\([0-9]*\)/sum('\1')/g" %s > %s' %(file1,file2)
我收到语法错误
在上面之后我需要做: -
subprocess.call([sed_cmd],shell=True)
解决方案
主要问题:
- 单引号
'
在常规单引号字符串文字中未转义(这会使语法损坏) \1
在常规字符串文字内定义一个\x01
字符、一个 SOH 字符,而不是一个正则表达式反向引用(需要两个字符组合,\
这里是 +1
)。
您可以使用
sed_cmd = r"""sed "s/0x\([0-9]*\)/sum('\1')/g" {} > {}""".format(file1,file2)
详情:
r"""..."""
是一个三引号的原始字符串文字,您可以在其中自由使用未转义'
的 and"
,并且\
chars 表示文字反斜杠{}
是格式字符串中的占位符,第一个将用括号中作为参数传递的第一个和第二个变量的内容填充(请参阅 参考资料.format(file1,file2)
)。
推荐阅读
- asp.net - 无法在新的 VS 2019 安装中运行 Web 应用程序
- visual-studio - Windows 窗体设计器崩溃 Visual Studio,找不到 System.ComponentModel.Annotations
- r - 如何根据 R 中的时间点创建新变量
- python - matplot中的等高线图显示不正确的线型
- r - 如何制作具有唯一计数和计数+百分比信息的表格
- python - 用 wxpython 启动一个隐藏面板
- python-3.x - 向字典中的唯一键添加多个值 - Python
- oracle - Oracle - DBMS_PARALLEL_EXECUTE 失败,没有错误
- r - ggplot2 填充/分组导致不需要的线条在 geom_ribbon 中连接
- python - 我将如何做到这一点,以便我可以输入我想在上下大写中使用的内容?示例 - sin/SIN、tan/TAN