我有一个包含
的文件trial.txtThis can stay
// but this
/ and this
// must go
I will be happy
删除在其他情况下使用的前导#I
os.system(" sed '/^#.*/d' trial.txt > start.txt ")
所以删除//我用过
os.system(" sed '/^//.*/d' trial.txt > start.txt ")
但这会产生错误
sed: 1: "/^//.*/d": invalid command code /
有什么建议吗?最好是Python还是Linux?
答案 0 :(得分:0)
当然你必须逃避斜线,不要逃避斜线...另一个斜杠(并使用原始字符串前缀)
os.system("sed r'/^\/.*/d' trial.txt > start.txt")
但是由于很多原因,这不是非常pythonic:
os.system
已弃用,以支持subprocess
sed
当Python可以原生地执行它是过度的(也不是可移植的,例如在必须单独安装sed
的Windows上,单引号也不会在那里工作......) 除此之外,不会过滤掉单个斜线。
我会在每行的开头测试/
,并使用writelines
生成器理解:
with open("trial.txt") as fr, open("start.txt","w") as fw:
fw.writelines(line for line in fr if not line.startswith("/"))