python实现根据指定字符截取对应的行的内容方法
工作中遇到的,在一个.c文件中有很多函数,这个.c是自动生成的,需要将所有的函数通过extern放到.h中,每个函数都是UINT32O_开头,通过正则表达式进行字符匹配以及通过linecache来截取特定行。
代码如下:
#!/usr/bin/envpython
#encoding:utf-8
#!/usr/bin/envpython
#encoding:utf-8
importre
importlinecache
file='D:\PUSCH_job3.txt'
outfile='D:\outfile3.txt'
lineNumber=1
withopen(file,'r')asf:
number=[]
forlineinf.readlines():
m=re.findall(r"UINT32O_\w+",line)#匹配含有字符'UINT32O_'的行
ifm:
number.append(lineNumber)
n=re.findall(r"OUT\w+",line)#假设只有一个OUT
ifn:
number.append(lineNumber)
lineNumber+=1
withopen(outfile,'w+')asf_w:
forjinrange(len(number)):
ifj%2==0:
start=number[j]
end=number[j+1]
destlines=linecache.getlines(file)[start-1:end]#截取start-end行的字符,不包括start-1,但包含end行
f_w.write('extern')
foriinrange(len(destlines)):
ifi!=len(destlines)-1:
f_w.write(destlines[i])
else:
f_w.write(destlines[i].replace('\n',';\n'))
f_w.write('\n')
输入:
UINT32O_FUNC1(UINT32uwA,
INUINT32uwB,
INUINT32*puwC,
INUINT32*puwD,
OUTUINT32*puwE)
{
//
}
输出:
externUINT32O_FUNC1(UINT32uwA, INUINT32uwB, INUINT32*puwC, INUINT32*puwD, OUTUINT32*puwE);
以上这篇python实现根据指定字符截取对应的行的内容方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。