当前位置: 首页 > news >正文

python实现C++简易自动压行

突发奇想,想要将自己的c++压行之后交上去。但是苦于手动压行效率太低,在网上搜索压行网站没有找到,突然发现压行不就是检查检查去个换行符吗。于是心血来潮,用python实现了一个简易压行程序。

首先,宏定义等带#的文件不能跟压行,会报错。其次是行注释要删除,不能这一行后面都被注释掉了。

因此,我用一个变量txt表示压行之后的内容,每次用line读取行字符串内容。将line字符串中//后面的内容舍去。

strip函数得到line剔除空格和换行符等。如果line里有#字符,就不进行换行。由于不换行需要考虑压行后的txt字符串中是否有换行符\n,如果已经有了,则不用再txt后面再加入\n,否则需要在txt字符串后添加换行符。由于后面的行也不能在该行后面,所以在line字符串后添加换行符。将line拼接到txt后面即可。

with open(file=r"lab.cpp", mode="r", encoding="utf-8") as fb:# 考虑第一行就是#等,txt初始化为 `\n`txt = "\n"while True:# 循环读入行line = fb.readline()# 如果是空,则结束if not line:break# 有 "//" ,舍去 "//" 后面的内容if line.find("//") != -1:line = line[: line.find("//")]# 将line剔除前后的空格和换行line = line.strip()# 如果该行有'#',该行需要单独一行if line.find("#") != -1:# 如果txt已经有换行,则不需要再添,否则需要添加换行if txt[-1] != '\n': txt += "\n"line += "\n"txt += line# 输出到 压行.cpp 文件内with open(file = r"压行.cpp", mode="w", encoding="utf-8") as f:print(txt, file=f)print("ok")

效果:

image-20231129021717548

相关文章:

python实现C++简易自动压行

突发奇想,想要将自己的c压行之后交上去。但是苦于手动压行效率太低,在网上搜索压行网站没有找到,突然发现压行不就是检查检查去个换行符吗。于是心血来潮,用python实现了一个简易压行程序。 首先,宏定义等带#的文件不…...

京东数据分析(京东大数据采集):2023年线上珍珠市场销售数据采集

在珠宝首饰市场,从黄金到钻石,如今年轻人的新风潮又转向了珍珠。珍珠热潮并非刚刚兴起,早在前两年,抖音、快手等短视频台的珍珠开蚌直播内容,就掀起了一波珍珠热潮。 此后,随着珍珠饰品被越来越多社交平台的…...

亚信科技AntDB数据库与库瀚存储方案完成兼容性互认证

近日,亚信科技AntDB数据库与苏州库瀚信息科技有限公司自主研发的RISC-V数据库存储解决方案进行了产品兼容测试。经过双方团队的严格测试,亚信科技AntDB数据库与库瀚数据库存储解决方案完全兼容、运行稳定。除高可用性测试外,双方进一步开展TP…...

现代C++之万能引用、完美转发、引用折叠

现代C之万能引用、完美转发、引用折叠 0.导语1.问题引入2.引入万能引用3.万能引用出现场合4.理解左值与右值4.1 精简版4.2 完整版4.3 生命周期延长4.4 生命周期延长应用5.区分万能引用6.表达式的左右值性与类型无关7.引用折叠和完美转发7.1 引用折叠之本质细节7.2 示例与使用7.…...

ELK日志收集系统-filbeat

filebeat日志收集工具 elk:filebeat日志收集工具和logstash相同 filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源要小的多 filebeat可以运行在非Java环境,它可以代理logstash在非java环境上收集日志…...

Python小知识

个人学习笔记,用于记录使用过程中好用的技巧、好用的库。 1 小知识 1.1 相对路径 1.2 打包Exe文件 命令: pyinstaller -F main.py其中-F:覆盖之前打包的文件 mian.py:需要打包的Python文件 PS:使用pyinstaller 5.1…...

如何在Ubuntu系统上安装Redis

Redis的下载 Redis安装包分为windows版和Linux版当前示例中介绍的是Linux版本Linux的下载地址:Index of /releases/ (redis.io)本次下载的压缩包为:redis-6.2.14.tar.gzRedis的安装 将压缩包通过ssh远程工具上传到Linux服务器中解压压缩包 tar -zxvf red…...

Vue2问题:如何全局使用less和sass变量?

前端功能问题系列文章,点击上方合集↑ 序言 大家好,我是大澈! 本文约2400字,整篇阅读大约需要4分钟。 本文主要内容分三部分,如果您只需要解决问题,请阅读第一、二部分即可。如果您有更多时间&#xff…...

Java 基础学习(四)操作数组、软件开发管理

1 操作数组 1.1.1 System.arraycopy 方法用于数组复制 当需要将一个数组的元素复制到另一个数组中时,可以使用System.arraycopy方法。它提供了一种高效的方式来复制数组的内容,避免了逐个元素赋值的繁琐过程。相对于使用循环逐个元素赋值的方式&#x…...

git仓库如何撤销提交,恢复提交,重置版本命令

撤销提交: 要撤销最近一次提交(未推送到远程仓库),可以使用以下命令: git reset HEAD^该命令将会把最后一次提交的修改从当前主分支中移除,并将这些修改的状态保留在本地工作目录中。 如果想要取消所有的…...

Java 基础学习(三)循环流程控制与数组

1 循环流程控制 1.1 循环流程控制概述 1.1.1 什么是循环流程控制 当一个业务过程需要多次重复执行一个程序单元时,可以使用循环流程控制实现。 Java中包含3种循环结构: 1.2 for循环 1.2.1 for循环基础语法 for循环是最常用的循环流程控制&#xff…...

别太担心,人类只是把一小部分理性和感性放到了AI里

尽管人工智能(AI)在许多方面已经取得了重大进展,但它仍然无法完全复制人类的理性和感性。AI目前主要侧重于处理逻辑和分析任务,而人类则具有更复杂的思维能力和情感经验。 人类已经成功地将一些可以数据化和程序化的理性和感性特征…...

最新AIGC创作系统ChatGPT系统源码+DALL-E3文生图+图片上传对话识图/支持OpenAI-GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…...

在centos7上源码安装nginx

1. 安装必要的编译工具和依赖项 在编译Nginx之前,你需要安装一些编译工具和依赖项。可以通过以下命令安装: yum install gcc-c pcre-devel zlib-devel make 2. 下载Nginx源代码 从Nginx官网下载最新的源代码。你可以使用wget命令来下载: …...

Html网页threejs显示obj,ply三维图像实例

程序示例精选 Html网页threejs显示obj,ply三维图像实例 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Html网页threejs显示obj,ply三维图像实例》编写代码,代码整洁&#xff0…...

Windows平台下的oracle 11G-11.2.0.4补丁升级操作指南

序号 文件名称 文件说明 1 p6880880_112000_MSWIN-x86-64_OPatch 11.2.0.3.33 for DB 11.2.0.0.0 (Feb 2022) 用于升级 OPatch 2 DB_PSU_11.2.0.4.220118 (Jan 2022)_p33488457_112040_MSWIN-x86-64 主要补丁文件 注意:请用管理员权限运行文件内命令&#…...

MFC居中显示文字及其应用

首先获取窗口客户区矩形,然后使用DrawText输出,设置DT_CENTER 和 DT_VCENTER标志; 输出如上图;没有实现垂直居中; 最终的代码如下; void CcenterView::OnDraw(CDC* pDC) {CcenterDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;// TODO: 在此处为…...

50-75GHz大功率六倍频源设计

摘 要 本文介绍了毫米波的特点,根据构成毫米波倍频器的不同器件,介绍了不同毫米波倍频器的实现方法,综述了毫米波倍频器这一领域的研究水平及其发展动态,重点研究频段全波导带宽倍频器的设计方法,从而将波段信号扩展到…...

Qt 软件调试(一) Log日志调试

终于这段时间闲下来了,可以系统的编写Qt软件调试的整个系列。前面零零星星的也有部分输出,但终究没有形成体系。借此机会,做一下系统的总结。慎独、精进~ 日志是有效帮助我们快速定位,找到程序异常点的实用方法。但是好的日志才能…...

docker network容器网络通信

Docker 网络主要有以下两个作用: 容器间的互联和通信以及端口映射容器IP变动时候可以通过服务名直接网络通信而不受到影响 只要是处于同一个Docker 网络下的容器就可以使用服务名直接访问,而无需担心重启。 docker容器网络模式 bridge网络模式&#…...

把近万个源文件喂给AI之前,我先做了一件事刀

插件化架构 v3 版本最大的变化是引入了模块化插件系统。此前版本中集成在核心包里的原生功能,现在被拆分成独立的插件。 每个插件都是一个独立的 Composer 包,包含 Swift 和 Kotlin 代码、权限清单以及原生依赖。开发者只需安装实际用到的插件&#xff0…...

数据摄取构建模块简介(预览版)(一)刺

一、语言特性:Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一,就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...

Draw.io电子工程绘图库终极指南:三步构建专业电路图

Draw.io电子工程绘图库终极指南:三步构建专业电路图 【免费下载链接】Draw-io-ECE Custom-made draw.io-shapes - in the form of an importable library - for drawing circuits and conceptual drawings in draw.io. 项目地址: https://gitcode.com/gh_mirrors/…...

SpringBoot3项目实战:用MapStruct优雅解决DTO转换难题(附完整代码)

SpringBoot3项目实战:用MapStruct优雅解决DTO转换难题(附完整代码) 在Java企业级开发中,对象转换就像空气一样无处不在却又容易被忽视。每次从数据库层到业务层再到展示层,我们都在重复做着DTO、DO、VO之间的转换工作。…...

gte-base-zh开源可部署优势:支持国产昇腾/寒武纪芯片适配路线

gte-base-zh开源可部署优势:支持国产昇腾/寒武纪芯片适配路线 1. 快速了解gte-base-zh模型 gte-base-zh是由阿里巴巴达摩院训练的中文文本嵌入模型,基于BERT框架构建。这个模型专门为中文文本处理设计,能够将文本转换为高质量的向量表示&am…...

如何快速解锁网易云音乐NCM格式:面向音乐爱好者的完整解密解决方案

如何快速解锁网易云音乐NCM格式:面向音乐爱好者的完整解密解决方案 【免费下载链接】ncmdump ncmdump - 网易云音乐NCM转换 项目地址: https://gitcode.com/gh_mirrors/ncmdu/ncmdump 还在为网易云音乐下载的NCM格式文件只能在特定应用内播放而烦恼吗&#x…...

计算机工程与应用投稿求助

计算机工程与应用二审后主编给了请专家复审意见,请问下朋友们这样复审的话还是二审的专家吗?这样的话中的希望还大吗?谢谢朋友们...

别再骂大模型笨了!用“显式工作记忆法”彻底根治LLM“死不悔改”的照搬行为

别再骂大模型笨了!用“显式工作记忆法”彻底根治LLM“死不悔改”的照搬行为 在将大模型接入业务系统的过程中,你一定遇到过这种让人抓狂的场景: 你在Prompt里明确写了:“请给出不同于旧方案的新组合,严禁照搬&#xff…...

网盘直链解析技术:如何绕过客户端限制实现高速下载

网盘直链解析技术:如何绕过客户端限制实现高速下载 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 你是否曾因网盘客户端下载限速而苦恼?是否在无法安装客户端的环境中…...

frpc-desktop自动化版本号管理:使用standard-version

frpc-desktop自动化版本号管理:使用standard-version 在开源项目开发中,手动管理版本号和更新日志不仅繁琐,还容易出错。本文将介绍如何在frpc-desktop项目中集成standard-version工具,实现版本号自动递增、CHANGELOG.md自动生成…...