我想在第一次出现标题后用python编辑一个很长的文件。该文件如下所示:
*First Heading
line1
line2
line3
line4
*Second Heading
line1
line2
line3
line4
*Third Heading
line1
line2
line3
...
...
more headings and many more lines
我想替换(例如)第二标题的第2行,例如:
someNewtext line2
使用sed,我可以非常有效地做到这一点:
sed -e -i '/\*Second\ Heading/,/\*Third\ Heading/s/line2/someNewText\ line2/' file.txt
我可以用高效的方式在Python中做类似的事情吗?
答案 0 :(得分:1)
如果我们要将sed
命令移植到python
,它将类似于:
import re
import fileinput
state = 0
for line in fileinput.input('file.txt', inplace=True, backup='.bak'):
line = line.rstrip('\r\n')
if state == 1:
line = re.sub('line2', 'someNewText line2', line)
if line.startswith('*Second Heading'):
state = 1
elif line.startswith('*Third Heading'):
state = 0
print line
fileinput.close()
执行时间会很高效,但效率可能不高
以sed
或Perl
编程。叹气。
答案 1 :(得分:0)
使用subprocess module,您可以像以前一样使用sed。
subprocess.run("sed -e -i '/\*Second\ Heading/,/\*Third\ Heading/s/line2/someNewText\ line2/' file.txt")