文件排版(文本文件读写)

Python文本文件读写:编码、换行符与内存管理实战 文本文件读写是数据处理的基础能力,本质是字节流与字符串之间的编码解码过程。理解UTF-8、GBK等编码机制,掌握BOM识别与自动剥离(utf-8-sig),能避免90%的乱码问题;厘清\n、\r\n换行符差异及strip()与rstrip()的行为边界,可精准控制段落结构与空白处理;结合with上下文管理、迭代器流式读取和buffering参数调优,可在保障资源安全的同时实现超大文件低内存占用处理。本文聚焦pandas.read_table、numpy.loadtxt与原生open三大路径的原理级选型逻辑, 阅读详情

前言

我现在学习文件的输入与输出,写下此篇博客充当学习笔记

问题回顾

英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号ldquo:rdquo分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中:

1.从标准输入整数,作为排版后所有各行冒号在一行中的固定位置,输入的整数肯定大于排版后所有各行冒号前的字符个数,位置从1开始计数;

2.冒号左边的单词串以行头为基准左对齐,左边的最后一个单词与冒号之间以空格填充;冒号右边的单词串以冒号基准左对齐,最后一个单词后只有回车换行符,不再有其它字符;

3.冒号左右两边的单词间都只有一个空格分隔,并且要求冒号两边至少各有一个空格。

假设输入文件中每行字符个数不超过100。

【输入形式】

待排版的参演人员名单从当前目录下的listin.txt文件中读入,表示冒号位置的整数从标准输入读入。

【输出形式】

排版后的参演人员名单输出到当前目录下的listout.txt中。

【输入样例】

假设文件listin.txt内容为:

Digital Intermediate by : EFILM

Supervising Digital Colorist : STEVEN J. SCOTT

Second Colorist :ANDREW FRANCIS

Digital Intermediate Producer:LOAN PHAN

Digital Intermediate Editor: DEVON MILLER

表示冒号固定位置的整数为:

40

【输出样例】

文件listout.txt中的内容应为:

【样例说明】

输入的文件listin.txt中有五行参演人员名单,要求排版后冒号位于第40个字符的位置,按照上述排版规则输出到文件listout.txt中。

代码实现

#include<iostream>
#include<fstream>//支持磁盘文件输入和输出
#include<iomanip>//控制输出格式
#include<string>
using namespace std;
int main(){
    int location;
    cin >> location;//设置冒号固定的位置
    ifstream infile("listin.txt");
    ofstream outfile("listout.txt");
    string str;

    while (getline(infile,str))//读取文件中的一行,设置为按行读取
    {
    bool flag = true;//判断是在“:”前还是之后
    string ocu, name;//分别表示职位和姓名
    for (int i = 0; i < str.length();i++){
            if(str[i]==':'){
                flag = false;
                continue;
            }
            if (flag == true){
                if(str[i]!=' '&&str[i]!='\t'){//注意题目中有说制表符
                    ocu += str[i];
                    if(str[i+1]==' '||str[i+1]=='\t')
                    ocu += ' ';
                }
                
            }
            else{
                if(str[i]!=' '&&str[i]!='\t'){
                name += str[i];
                if(str[i+1]==' '||str[i+1]=='\t')
                    name += ' ';
                }
            }
        }
        outfile << setw(location - 1) << left << ocu << ':' << ' ' << name<<'\n';//输出到outfile文件中去,设置location-1个宽度,":"的位置自然就是location的位置了,"left"表示左对齐,头文件为iomanip
        
   }
    
    return 0;
}

可以一步步调试看看运行过程

【Anaconda】解决“libGL error: MESA-LOADER: failed to open iris”问题 stackoverflow中的“libGL error: MESA-LOADER: failed to open iris”问题。而在自己创建的conda环境中的lib下出现`GLIBCXX_3.4.30’ not found 的情况。在上述解决方案中,将第一行命令的lib路径换成自己创建的conda环境lib路径,运行指令,问题解决。目前问题解决,总结一下查找资料以及解决方法。运行如下命令,发现本地支持。 阅读详情

相关推荐

iTunes登录协议全解析:从抓包到签名验证(含HTTPDebugger避坑指南)

本文深入解析了iTunes登录协议的核心流程,包括sign-sap-setup-cert和sign-sap-setup-buffer等关键请求,并提供了使用HTTPDebugger等工具进行抓包分析时绕过反调试检测的实战技巧与避坑指南。文章详细拆解了PLIST编解码、请求签名验证机制及密码加密逻辑,为网络安全研究和协议逆向提供了完整的技术路径。

weixin_29224309的博客 331

Activiti6.0流程引擎学习——(3)linux中搭建环境安装tomcat与Activiti(图文结合)

这篇文章开始正式接触Activiti。 一、下载Tomcat压缩包 首先Activiti要跑在服务器中,所以首先在centOS7服务器中下载Tomcat服务器(注意我这里下载的是tomcat8): $ wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz 使...

JJBOOM425的博客 2533

MATLAB新手必看:SVPWM七段式算法仿真全流程解析(附完整代码)

本文为MATLAB新手和电机控制初学者提供了SVPWM七段式算法的完整仿真与代码实现指南。文章详细解析了从扇区判断、矢量作用时间计算到PWM波形生成的全流程,并附带了可直接运行的MATLAB代码,帮助读者在理解FOC控制核心算法的基础上,快速掌握工程仿真与调试技巧。

weixin_29074295的博客 283

Tomcat部署Activiti官方 流程设计器【数据库更换为Mysql !!!】

将wars文件夹下三个war文件复制到tomcat的webapps目录下,启动tomcat即可自动部署,首次部署需要初始化数据库,时间可能比较长,默认用的是自带的内存数据库h2,也可以修改为我们自己的数据库。

Jokers_lin的博客 1425

Matlab图像处理频域滤波实现——高斯低通、高通、带通带阻滤波器

如果你想要进一步了解更多的相关知识,

小嘤熊的博客 1万+

深入理解Android音视频同步机制(三)NuPlayer的avsync逻辑

本文深入介绍了NuPlayer的avsync逻辑和原理

张晖的专栏 1万+

tomcat部署activiti-app及流程图创建

使用tomcat部署activiti-app

工作与学习 1203

第244篇 视觉SLAM后端之BA优化——Bundle Adjustment的原理

本文介绍了SLAM后端优化中的Bundle Adjustment(BA)技术。BA通过同时优化相机位姿和3D路标点位置,最小化重投影误差,解决前端估计的累积误差问题。文章详细讲解了BA的数学原理,包括目标函数构建、Gauss-Newton法和Levenberg-Marquardt法求解过程,以及利用稀疏性和Schur补加速计算的关键技术。对比了全量BA和增量BA的优缺点,并介绍了Ceres、g2o等工程实现工具。BA作为SLAM后端的核心算法,其理解深度直接影响系统性能优化能力。

郑伟强dev的专栏 352

2020.2idea创建web_使用 IntelliJ IDEA 创建 Web 工程以及启动 Tomcat 乱码问题处理

很多人从 Eclipse 换成 IDEA 会比较 "畏手畏脚" 很多设置和操作都和之前不一样了,在这里我带大家用 IDEA 快速使创建一个简单的 Web 项目,以及使用 Web 启动 Tomcat 遇到的乱码问题处理做个汇总,希望能够帮到大家,IDEA 快速入手,玩到飞起来~1、创建 Web 工程 1)File ---> New ---> Project2)设置 Project nam...

weixin_39706127的博客 137

YOLOv11改进策略【损失函数篇】| 替换激活函数为Mish、PReLU、Hardswish、LeakyReLU、ReLU6

在卷积神经网络中,激活函数通过在神经网络中引入非线性,使网络能够学习和逼近复杂函数,从而处理复杂的模式识别与分类问题。

Limiiiing的博客 2798

【数据集介绍】MVTec 3D AD数据集介绍

MVTec AD(MVTec Anomaly Detection)数据集是用于异常检测的计算机视觉数据集。该数据集包含来自工业生产中不同材料和产品的图像,包括玻璃、塑料、纺织品等。每个类别都包含正常样本和异常样本。这些异常样本包括各种常见的生产缺陷,如划痕、裂纹、凹陷等。MVTec AD数据集旨在帮助研究人员和从业者开发和评估用于检测工业制造中物体缺陷的算法和系统。

原来也有北瓜 7753

activiti入门开发及部署

一、开发环境搭建1.安装sdkman用于管理java环境curl -s "https://get.sdkman.io" | bashsource "$HOME/.sdkman/bin/sdkman-init.sh"sdk version2.安装jdk环境sdk install java 8u161-oraclejava -versionecho $JAVA_HOME3.下载tomcatwget h...

镜水灵动 1066

STM32H750VB与AD5292通讯,写入阻值后,AD5292 的阻值没有变化,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1101

实验十 文件读写 1. 文件排版(文本文件读写)

【问题描述】 英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号ldquo:rdquo分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中: 1.从标准输入整数,作为排版后所有各行冒号在一行中的固定位置,输入的整数肯定大于排版后所有各行冒号前的字符个数,位置从1开始计数; 2.冒号左边的单词串以行头

chamberling的博客 2420

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

作业:文件排版(文本文件读写)

【问题描述】 英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号ldquo:rdquo分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中: 1.从标准输入整数,作为排版后所有各行冒号在一行中的固定位置,输入的整数肯定大于排版后所有各行冒号前的字符个数,位置从1开始计数; 2.冒号左边的单词串

m0_60451449的博客 851

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

湖大CG满分教程:文件排版(文本文件读写)

文件流实例

m0_73657989的博客 541

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

c语言词典课程设计报告,C语言课程设计英语词典排版系统

《C语言课程设计英语词典排版系统》由会员分享,可在线阅读,更多相关《C语言课程设计英语词典排版系统(21页珍藏版)》请在人人文库网上搜索。1、C语言课程设计院系:姓名:学号:班号:指导教师:日期:2010年9月第一部分1.设计题目:一种简单份的英文词典排版系统2实践目的通过进行计算机实践,更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧。利用系统提供的标准函数和自定义函数进行程序设计,培养...

weixin_39856589的博客 506

实验十 文件读写byHNU信息院2020小毕

实验十 文件读写 编程题1. 文件排版(文本文件读写) 【问题描述】 英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号ldquo:rdquo分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中: 1.从标准输入整数,作为排版后所有各行冒号在一行中的固定位置,输入的整数肯定大于排版后所有各行冒号前的

jiajia1as的博客 1918

Android Studio App 上手笔记

1、排版 不了解安桌的控件与布局操作,决定使用 WebView 与外框通信的方式,排版的事情交给 H5。 2、布局 将 WebView 覆盖主体部分。 <WebView android:id="@+id/homewebview" android:layout_width="match_parent" android:layou...

三角室专栏 342

C++:文本文件读写

必须包含头文件 #include<fstream> 三种方式 ifstream 读文件 ofstream 写文件 fstream 读写文件 //创建流对象 fstream iof;//iof对象名 iof.open("路径名",打开方式); //关闭文件 iof.close(); #include<iostream> #include&lt...

qq_45976950的博客 299

万物皆 0/1:图解文本文件与二进制文件的本质区别

层面文本文件二进制文件哲学内容为王,面向人类阅读。格式为王,面向机器处理。关键使用字符编码,内容被解释为字符流。使用文件格式,内容被解释为特定数据结构。一句话一种人类可读的、有通用编码规则的特殊二进制文件。一切皆二进制,文本文件只是它的一个子集。当你用记事本打开一个文件,能看懂且不奇怪,那它大概率是文本文件;如果看到一堆乱码或直接崩溃,那它肯定是二进制文件。

2501_92822955的博客 887

c语言之——文件

同样地,当需要写入文件时,程序会先将数据写入缓冲区,然后再将缓冲区中的数据一次性写入文件中,这样可以减少频繁的硬盘写入操作,从而提高写入效率。一个文本文件是一个包含纯文本数据的文件。与文本文件不同,二进制文件中的数据没有特定的编码格式,可以包含任意类型的数据,如图像、视频、音频、可执行代码等。文件是计算机中存储数据的一种方式,可以存储各种类型的数据,如文本、图像、音频等。文件的类别包括文本文件(.txt)、图像文件(.jpg、.png)、音频文件(.mp3、.wav)、视频文件(.mp4、.avi)等等。

2301_81254840的博客 2079

【Python】文件读写

简要而相对全面介绍Python对于文件的读写操作

weixin_47383889的博客 346

编写Java程序,将文本文件(附件提供有example.txt)的内容以“行”为单位进行倒序排列

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、MOOC_Java第六章题目二、使用步骤1.输入输出流解题思路(BufferedReader/Writer)1.代码方案一(try....catch异常处理):2.代码方案二(throws IOException)2.代码方案三(直接写main里面)4.输出示例总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、MOOC_Java第六章题目 编写Java程序,将文本文件(附件提供有example.txt)的内容以“行”.

qq_39692183的博客 2068

python读写csv的操作汇总_Python读写CSV

csv文件的概念这应该是你第一次接触csv这种格式的文件吧。那么什么是csv文件呢?csv是"Comma-Separated Values(逗号分割的值)"的首字母缩写,它其实和txt文件一样,都是纯文本文件。但csv文件可以显示为电子表格的样式,所以我们也可以把csv文件视为一种简化版的电子表格。简化版是什么意思呢?回顾一下我们常见的Excel表格,不仅有“居中”排版,表格边框等样式,还有各种E...

weixin_39965673的博客 329

c++文件

总结一下文件,顺便复习 文件两大类:文本文件(字符)和二进制文件(保留数据类型) 一、文本文件 打开方式: 只读:file.open(“文件名.格式”,ios::in) 只写:file.open(“文件名.格式”,ios::out) //这两种每次打开均会刷新文件 可读可写:file.open(“文件名.格式”,ios::in|ios::out) 追加:file.open(“文件名.格式”,ios::app)//这两种不会刷新文件内容 //上述四种如果文件不存在,会创建一个新文件。 测试文件是否打开成功:

qq_61159776的博客 2752
上一篇: 3D山脉——java实现山脉模型
下一篇: 线程起步,解决一个过程只能进行一次画图的问题
南懿烨曦
博客等级 码龄6年 108粉丝 35原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值