python实现根据指定字符截取对应的行的内容方法

yipeiwu_com5年前Python基础

工作中遇到的,在一个.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实现根据指定字符截取对应的行的内容方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python2.7读取PDF文件的方法示例

本文实例讲述了Python2.7读取PDF文件的方法。分享给大家供大家参考,具体如下: 这篇文章示例代码采用的Python版本是2.7,需要下载的插件是PDFMiner,下载地址是htt...

Tensorflow中的placeholder和feed_dict的使用

TensorFlow 支持占位符placeholder。占位符并没有初始值,它只会分配必要的内存。在会话中,占位符可以使用 feed_dict 馈送数据。 feed_dict是一个字典...

Python使用combinations实现排列组合的方法

好久没有写博客了!昨天小牛在上海举办了牛友见面会,现场优惠还是比较大,心仪已久加上一时脑热就入手了。以为会有多么开心,其实目前最大的感受就是焦虑!担心电动车被偷,担心电池被偷,担心路上突...

Python判断Abundant Number的方法

本文实例讲述了Python判断Abundant Number的方法。分享给大家供大家参考。具体如下: Abundant Number,中文译成:盈数(又称 丰数, 过剩数abundant...

python 利用jinja2模板生成html代码实例

这篇文章主要介绍了python 利用jinja2模板生成html代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 from...