全自动面包机食谱,淘大客信誉查询网站,瓦莱里娅·卢基亚诺娃
工作中遇到的,在一个.c文件中有很多函数,这个.c是自动生成的,需要将所有的函数通过extern放到.h中,每个函数都是uint32 o_开头,通过正则表达式进行字符匹配以及通过linecache来截取特定行。
代码如下:
#! /usr/bin/env python # encoding:utf-8 # ! /usr/bin/env python # encoding:utf-8 import re import linecache file = 'd:\pusch_job3.txt' outfile = 'd:\outfile3.txt' linenumber = 1 with open(file,'r') as f: number = [] for line in f.readlines(): m = re.findall(r"uint32 o_\w+",line) #匹配含有字符'uint32 o_'的行 if m: number.append(linenumber) n = re.findall(r"out \w+",line) #假设只有一个out if n: number.append(linenumber) linenumber += 1 with open(outfile, 'w+') as f_w: for j in range(len(number)): if j%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 ') for i in range(len(destlines)): if i != len(destlines)-1: f_w.write(destlines[i]) else: f_w.write(destlines[i].replace('\n',';\n')) f_w.write('\n')
输入:
uint32 o_func1(uint32 uwa, in uint32 uwb, in uint32* puwc, in uint32* puwd, out uint32* puwe) { // }
输出:
extern uint32 o_func1(uint32 uwa, in uint32 uwb, in uint32* puwc, in uint32* puwd, out uint32* puwe);
以上这篇python实现根据指定字符截取对应的行的内容方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论