zoukankan      html  css  js  c++  java
  • 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
    infile = 'D:infile.txt'
    outfile = 'D:outfile.txt'
    lineNumber = 1
    with open(infile,'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('
    ',';
    '))
    				f_w.write('
    ')
    	
    

    输入:

    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);
    

      

  • 相关阅读:
    6.4 记录
    Python向mysql数据库插入数据
    6.2号课下作业测试标准的好坏
    模糊查询
    日常开发问题解决
    日常开发问题解决
    tomcat容器启动失败疑难问题解决方案
    5.14 记录
    5.13 记录
    关于HTTP,TCP,IP的一些基础知识
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8006409.html
Copyright © 2011-2022 走看看