Python开发之利用re模块去除代码块注释

目录
  • 前言
  • 知识点
    • re
    • 文件
  • 核心代码
  • 操作流程
  • code(Python)完整
  • 总结

前言

上次做了用于输入样例格式修改,相当于测试用例的过滤器,这次我们使用类似的思路来做一个对于像C++代码中块注释的过滤器。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */

观察上述代码,这是我从一道leetocde题目给的代码复制下来的,这是一个结构体的定义,语言是c++,对于这种块注释我们把它放在visual studio 2022 中,使用取消注释时,这些*还会保留,有时候一个个清除过于麻烦。所以,我们可以利用python的re模块实现对这种讨厌注释块的过滤,保留像结构体这种有意义的信息。

知识点

基本上和上次差不多,这里再简单回顾一下。

re

re模块主要是python 中集成正则表达式的模块,功能主要是字符串的匹配。

这里用到了三个re函数

re.complie(): 生成正则表达式对象

re.sub():将指定内容替换

re.search(): 查找函数,在字符串中查找第一个符合正则表达式对象的子串。

文件

除了re外,还使用到文件的一些操作,之前我们对于清空文件内容采取的方法是使用先以只读模式读取内容,然后关闭文件,再以写的方式打开,由于只写的方式会自动将内容清空的特性,自动实现该特点后再将内容写入。这次对于清空,我们采取一个新的操作。

我们可以以 r+ 模式打开文件,并在读取完后,使用truncate()函数实现对文件内容清空。

核心代码

正则表达式对象,第一行是块注释的一些特征

pattern = re.compile(r'/\*{0,2}| \* | \*/')
white = re.compile(r'\S')

识别开头的/* 或者*并替换,以及跳过多余的空白行。

# 由于只针对开头,只能使用一次匹配
line = pattern.sub("", line, 1)
# 忽略空白行
if white.search(line):
    ans += line + "\n"

操作流程

我们先将内容用记事本保存。

然后在pycharm 中运行我们程序,当然要先传入文件地址。

然后再打开文件,我们就会发现文件内容方式了更改。

这里不知道什么原因,居然把那个Defintion去掉了,看了代码也没懂,有机会再研究一下。

其实是再第一行末位了哈哈哈。

code(Python)完整

import re
# 去除块注释
def rem_block_ann(filepath):
    """
    该函数用于去除讨厌的块注释
    :param filepath: 文件路径,txt文件
    :return:
    """
    pattern = re.compile(r'/\*{0,2}| \* | \*/')
    white = re.compile(r'\S')
    # 打开文件
    file = open(path, 'r+')
    # 先将内容分行存入列表lines
    lines = file.read().split('\n')
    file.truncate(0)
    ans = ""
    for line in lines:
        # 由于只针对开头,只能使用一次匹配
        line = pattern.sub("", line, 1)
        # 忽略空白行
        if white.search(line):
            ans += line + "\n"
    print(ans, file=file)
    file.close()

path = "F:\\刷\\leetcode\\22年3月\\blog\\testdemo\\226structcode.txt"
rem_block_ann(path)

不摆了。

总结

到此这篇关于Python开发之利用re模块去除代码块注释的文章就介绍到这了,更多相关Python去除代码块注释内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python中的三种注释方法

    目录 python注释方法 方式1 方式2 方式3 python小技巧 开头注释 设置路径 python注释方法 方式1 单行注释:shift + #(在代码的最前面输入,非选中代码进行注释) 多行注释:同单行一样在每一行的前面输入shift + #(较麻烦了) 方式2 单行和多行一样的方式:Ctr+ /  (前提是选中需要注释的代码) 方式3 输入''' '''或者""" """,将要注释的代码插在中间 ''' 这是多行注释,使用单引号. 这是

  • Python注释详解

    注释用于说明代码实现的功能.采用的算法.代码的编写者以及创建和修改的时间等信息. 注释是代码的一部分,注释起到了对代码补充说明的作用. Python注释 Python单行注释以#开头,单行注释可以作为单独的一行放在被注释的代码行之上,也可以放在语句或者表达式之后. #Give you a chance to let you know me print("Give you a chance to let you know me") say_what = "this is a d

  • Python 中写注释的方法

    在写 Python 代码的时候,一个很好的编码实践就是使得你的代码简洁,易懂.组织代码,设置变量,以及给函数有意义的名字,都是几个不错的方法. 另外一个提高代码可读性的方式就是使用注释.一个注释就是可以用来解释代码的一段人类可读的解释或者一个注解.例如,如果你写了一个复杂的正则表达式,你可以添加一个注释,描述代码做了什么. 在你的 Python 代码中添加注释,在将来你阅读你的代码时,可以节省很多的时间和努力.比如说,你想修改一段你在几个月前或者几年前写的脚本.很可能你不记得为什么你写了一些比较

  • Python文件去除注释的方法

    本文实例讲述了Python文件去除注释的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python # -*- coding: GBK -*- #writer:xmnathan #py文件去注释 import re import os import ConfigParser Python='CleanNote' def ReadIni(path,section,option):#文件路径,章节,关键词 #读取ini cf=ConfigParser.ConfigParser

  • Python中注释(多行注释和单行注释)的用法实例

    前言 学会向程序中添加必要的注释,也是很重要的.注释不仅可以用来解释程序某些部分的作用和功能(用自然语言描述代码的功能),在必要时,还可以将代码临时移除,是调试程序的好帮手. 当然,添加注释的最大作用还是提高程序的可读性!很多时候,笔者宁愿自己写一个应用,也不愿意去改进别人的代码,没有合理的注释是一个重要原因.虽然良好的代码可自成文挡,但我们永远也不清楚今后读这段代码的人是谁,他是否和你有相同的思路.或者一段时间以后,你自己也不清楚当时写这段代码的目的了. 总的来说,一旦程序中注释掉某部分内容,

  • Python实战小程序利用matplotlib模块画图代码分享

    Python中的数据可视化 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件. 实战小程序:画出y=x^3的散点图 样例代码如下: #coding=utf-8 import pylab as y #引入pylab模块 x = y.np.linspace(-10, 10, 100) #设置x横坐标范围和点数 y.plot(x, x*x*x,'or') #生成图像 ax = y.gca() a

  • 快速了解Python开发中的cookie及简单代码示例

    cookie :是用户保存在用户浏览器端的一对键值对,是为了解决http的无状态连接.服务端是可以把 cookie写到用户浏览器上,用户每次发请求会携带cookie. 存放位置: 每次发请求cookie是放在请求头里面的. 应用场景: ·登陆用户和密码的记住密码 ·显示每页显示的数据,以后都是按照设定的数目显示 ·投票机制 案例用户登录 创建用户登录的url url(r'^login/', views.login), 创建登录页面 代码为: <!DOCTYPE html> <html l

  • python爬虫之利用selenium模块自动登录CSDN

    一.页面分析 CSDN登录页面如下图 二.引入selenium模块及驱动 2.1 并将安装好的Chromedriver.exe引入到代码中 # -*- coding:utf-8 -*- from selenium import webdriver import os import time #引入chromedriver.exe chromedriver="C:/Users/lex/AppData/Local/Google/Chrome/Application/chromedriver.exe&

  • python开发的小球完全弹性碰撞游戏代码

    完成这个小球的完全弹性碰撞游戏灵感来自于: 下面是我花了一周下班时间所编写的一个小球完全弹性碰撞游戏: 游戏初始化状态: 最下面的游标和修改小球的移动速度 源码部分: 复制代码 代码如下: #python tkinter#python version 3.3.2 from tkinter import * '''    判断    两个小球    {        圆心:A(x1,y1)  半径:r  X轴速度:Vax  Y轴速度:Vay        圆心:B(x2,y2)  半径:R  X轴

  • python开发飞机大战游戏

    本文实例为大家分享了python开发飞机大战游戏的具体代码,供大家参考,具体内容如下 import pygame import random import math # 数学模块 # 初始化界面 pygame.init() # 设置窗口大小 windows = pygame.display.set_mode((800, 600)) # 设置窗口标题 pygame.display.set_caption("小赵同学") # 引入图片 logo icon = pygame.image.lo

  • Python利用socket模块开发简单的端口扫描工具的实现

    一.socket 1.简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. socket的工作流程 socket 采用C/S 模式,分为服务端和客户端 服务端数据处理流程 创建socket -> 绑定到地址和端口 -> 等待连接 -> 开始通信-> 关闭连接 客户端数据处理流程 创建socket -> 等待连接 -> 开始通信-> 关闭连接 客

  • Python利用requests模块下载图片实例代码

    本文主要介绍的是关于Python利用requests模块下载图片的相关,下面话不多说了,来一起看看详细的介绍吧 MySQL中事先保存好爬取到的图片链接地址. 然后使用多线程把图片下载到本地. 示例代码: # coding: utf-8 import MySQLdb import requests import os import re from threading import Thread import datetime header = {'User-Agent': 'Mozilla/5.0

  • 利用python开发app实战的方法

    我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了.最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一些相对成熟的模块,于是便开始了动手实战,过程中发现这其中有很多坑,好在最终依靠google解决了,因此小记一番. 说在前面的话 python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用python开发的app应当是作为编码练习.或者自娱自乐所用,加上目前这方面的模块还不是特别成熟,b

  • 利用 Python 开发一个 Python 解释器

    目录 1.标记(Token) 2.词法分析器(Lexer) 3.巴科斯-诺尔范式(Backus-Naur Form,BNF) 4.解析器(Parser) 前言: 计算机只能理解机器码.归根结底,编程语言只是一串文字,目的是为了让人类更容易编写他们想让计算机做的事情.真正的魔法是由编译器和解释器完成,它们弥合了两者之间的差距.解释器逐行读取代码并将其转换为机器码. 在本文中,我们将设计一个可以执行算术运算的解释器. 我们不会重新造轮子.文章将使用由 David M. Beazley 开发的词法解析

  • Python利用pangu模块实现文本格式化小工具

    其实使用pangu做文本格式标准化的业务代码在之前就实现了,主要能够将中文文本文档中的文字.标点符号等进行标准化. 但是为了方便起来我们这里使用了Qt5将其做成了一个可以操作的页面应用,这样不熟悉python的朋友就可以不用写代码直接双击运行使用就OK了. 为了使文本格式的美化过程不影响主线程的使用,特地采用QThread子线程来专门的运行文本文档美化的业务过程,接下来还是采用pip的方式将所有需要的非标准模块安装一下. pip install -i https://pypi.tuna.tsin

随机推荐