将cdays-4.txt给出的内容中的空格和注释删除,  以行为单位进行排序 ,并将结果输出到result.txt 中。

下面给出cdays-4.txt 的内容。

#some wordsSometimes in life,
You find a special friend;
Someone who changes your life just by being part of it.
Someone who makes you laugh until you can't stop;
Someone who makes you believe that there really is good in the world.
Someone who convinces you that there really is an unlocked door just waiting for you to open it.
This is Forever Friendship.
when you're down,
and the world seems dark and empty,
Your forever friend lifts you up in spirits and makes that dark and empty world
suddenly seem bright and full.
Your forever friend gets you through the hard times,the sad times,and the confused times.
If you turn and walk away,
Your forever friend follows,
If you lose you way,
Your forever friend guides you and cheers you on.
Your forever friend holds your hand and tells you that everything is going to be okay.



看似好难的题。

吓人原因:

1.看似操作复杂

2.竟然是字符串排序

3.竟然是文件中的字符串排序

4.没看过排序算法

5.怎么这么多字

6.文件操作还不熟悉

7.字符串怎么玩好像也不知道


先让我们解决我们知道的内容。

1)打开文件,读取文件,以只读方式打开。

a_file = open ( 'D:\\cdays-4.txt','r' )

2)打开一个新文件,存放结果,以写方式。

result_file = open ( 'D:\\result.txt','w' )

3)将结果写入结果文件

result_file.write(result_str)         #  result_str 是结果序列
result_file.close()

好了。其他的好像都不会。

首先,我们解决读取文件的问题。

在之前的日志中,我们已经提到了文件打开,文件写入,文件关闭,地址:http://www.cnblogs.com/Kaysin/archive/2013/02/09/2909553.html

同样,参考书 《Dive in python 3》

用原书的话说,在Python 中按行读取文件是如此的简单优美:

a_file.readlines (  ):

这货类似于walk ( ) 的用法。

让我们解决文件按行读取的问题:

for line in a_file.readlines (  ):

然后循环体里面应该有的东西.

  1. 判断是否是空行,或者是注释,删除
  2. 删除空白
  3. 将每行存进序列中

解决第一个,空行怎么办,没有字符,长度为0,注释的话,第一个字符为 ‘#’让我们写一个if 判断,如果符合结果,应该跳到下一行,那么用continue 就可以了 。

等等,怎么确定长度和第一个字符,让我们去翻参考书吧。

根据《Python学习手册(第三版)》,使用len( ) 可以确定字符串长度。第一个字符可以用索引实现 :  line[0]

if len(line)==0 or line[0]==('#'):continue

怎么删除空白呢,我们继续找。

《Python学习手册(第三版)》P165 有个例子,说的是删除字符串后面的空白,用的是字符串方法,line.rstrip ( )

那么就是说,字符串方法里面有解决方法。让我们在文档中找一下。

原来删除首尾字符串有三个函数,分别是  string.lstrip( ) 删除前面的   string.rstrip( ) 删除后面的  string.strip( ) 删除前后的。

显然我们需要用第三种。

第三个问题,这个序列我们要存入各种字符串,那么,我们应该用list实现。

我们用列表方法。

result_str.append(line)

我们把现在知道的所有语句组合在一起调试一下。

a_file = open ( 'D:\\cdays-4.txt','r' )
result_file = open ( 'D:\\result.txt','w' )
result_str=list();
for line in a_file.readlines (  ):if len(line)==0 or line[0]==('#'):continueline.strip()result_str.append(line)result_file.write(result_str)         #  result_str 是结果序列
result_file.close()

发现问题,改为list ,不应该这样输出了。

result_file.write('%s' % '\n'.join(result_str))

观察输出结果,我们发现有一行是空行,调整删除空白与判断字符串长度语句的顺序。

a_file = open ( 'D:\\cdays-4.txt','r' )
result_file = open ( 'D:\\result.txt','w' )
result_str=list();
for line in a_file.readlines (  ):line=line.strip()if len(line)==0 or line[0]==('#'):continueresult_str.append(line)result_file.write('%s' % '\n'.join(result_str))         #  result_str 是结果序列
result_file.close()

好了,我们剩下的工作只有排序了。

把这工作交给Python吧!

result_str.sort(  )

好了,我们把这句话加入到文件写入的前面。 看一下完整的程序吧。

a_file = open ( 'D:\\cdays-4.txt','r' )
result_file = open ( 'D:\\result.txt','w' )
result_str=list();
for line in a_file.readlines (  ):line=line.strip()if len(line)==0 or line[0]==('#'):continueresult_str.append(line)
result_str.sort(  )
result_file.write('%s' % '\n'.join(result_str)) #  result_str 是结果序列
result_file.close()

试想一下这个程序如果用C语言,那要写多少行呢,当然上面的程序还不是最简单的。

蛇年快乐,筒子们。

转载于:https://www.cnblogs.com/Kaysin/archive/2013/02/09/2909651.html

CDays–4 习题六(修改文本)及相关内容解析。相关推荐

  1. AD9364 测试平台开发——第六篇,SPI配置内容解析

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 AD9364 测试平台开发--第六篇,SPI配置内容解析 以下为个人的一些理解,有一些东西可能不一定理解透彻了,可能有错误,请指正和见 ...

  2. 自学SQL网习题题解:0-12(带内容解析!)

    自学SQL网习题题解:0-12(带内容解析!) 原创:丶无殇  2022-07-17 这是一个自学SQL的中文网站,基础内容质量高,语言简洁明了,能够快速学习并提升技能. 网址:http://xues ...

  3. CDays–5 习题二(利用Python科学计算特性,使用常用计算符)及相关内容解析。...

    利用python作为科学计算器.熟悉Python中的常用运算符,并分别求出表达式12*34+78-132/6.(12*(34+78)-132)/6.(86/40)**5的值.并利用math模块进行数学 ...

  4. Delphi 修改文本框中内容

    Delphi 修改Excel 中文本框内容 首先看一下Excel中录制的宏代码吧 Sub Macro1() ' ' Macro1 Macro ' 宏由 HFBiao 录制,时间: 2010-5-15 ...

  5. python习题:修改文件里的内容

    修改文件的内容: 文件内容替换:简单粗暴的方法就是:读出来然后字符串替换with open('geci.txt','a+',encoding='utf-8') as f: f.seek(0) all ...

  6. oracle 批量修改表结构,关于Oracle批量修改表结构相关内容的整理

    从各地搜集而来,以备不时之需,随时增改 1.给表加注释 COMMENT ON TABLE land.landsellmend IS '补办出让'; 2.查看表的COMMENT SELECT * FRO ...

  7. CDays-3 习题二 (字典及文件读取练习)及相关内容解析。Python 基础教程

    读取某一简单索引文件cdays-3-test.txt,其每行格式为文档序号 关键词,现需根据这些信息转化为倒排索引,即统计关键词在哪些文档中,格式如下:包含该关键词的文档数 关键词 => 文档序 ...

  8. 本地修改服务器上的内容,本地修改指向服务器

    本地修改指向服务器 内容精选 换一换 OBS Browser+是一款用于访问和管理对象存储服务的图形化工具,支持通过配置内网DNS服务器地址的方式,使在华为云上的Windows ECS通过内网直接访问 ...

  9. PDF Explained(翻译)第六章 文本和字体

    本文是对PDF Explained(by John Whitington)第六章<Text And Fonts >的摘要式翻译,并加入了一些自己的理解. 文本状态 文本状态相关的操作符和参 ...

最新文章

  1. spring boot第二讲
  2. 绝对强大的三个LINUX指令: AR, NM, OBJDUMP
  3. x265-确定slice type-3
  4. Dubbo仅仅是一个RPC框架?
  5. Codeforces Round #524 Div. 2 翻车记
  6. Linux SPI总线和设备驱动架构
  7. A Star寻路相关资料汇总
  8. 信息安全技术网络安全等级保护定级指南_行业标准 |报业网络安全等级保护定级参考指南V2.0发布,明确保护对象、定级要求...
  9. Kafka会不会丢消息
  10. 研磨设计模式之《模板方法模式template method》
  11. springboot test
  12. java毕业设计房产中介管理系统Mybatis+系统+数据库+调试部署
  13. 寻找百度图片搜索接口--two
  14. Jxls excel 导出带图片
  15. 解决Jenkins一直用户名或密码错误
  16. 记一次生产事故排查——CPU高负载原因排查分析
  17. 谷歌人工智能设计的芯片揭示什么是智能的本质
  18. web从零开始做网站:三.HTML标签:1.常用文本标签图像标签
  19. 05月11日三支有望飙涨股与操盘策略分析
  20. Android实现高德地图轨迹回放

热门文章

  1. python中for语句可以有else部分_Python中的for...else语句可以不写else吗?
  2. c#sort升序还是降序_C#中对数组或集合进行升序或降序排序
  3. Mysql中S 锁和 X 锁的区别
  4. vue-router获取url传参
  5. js之浅拷贝和深拷贝
  6. 手把手教你 Socket 通信(TCP/IP)
  7. linux环境对apk文件写入数据,Linux下7zip命令apk中插入文件标识渠道批量打包
  8. 计算机及网络应用基础思维导图_思维导图在生物教学中的应用
  9. red hat linux ping不通,装了Red Hat Enterprise 5.3 但是ping不通网关和其他机器,具体见贴内。...
  10. 【学习笔记】超简单的多项式开方