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

      

  • 相关阅读:
    常见的分布
    ubuntu16.04获取root权限并用root用户登录
    神经网络与深度学习邱锡鹏学习笔记16多项式回归
    什么是公版显卡,什么是非公版显卡
    高考电子监控揭秘
    买了个2手睡袋
    HTML
    又是一天
    我也想去看珠峰
    Qt 主界面菜单栏和状态栏实现
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8006409.html
Copyright © 2011-2022 走看看