Head First Python-Python简单处理文件
前面介绍了自定义格式化输出列表函数printList(),下面再介绍下格式化列表项及列表项的排序。
这里有一组列表数据,记录运动员跑步时间的,要求按照时间大小进行排序。这里每项数据记录的时间格式不一样,无法统一排序。(对字符串排序时,短横线-排在点号前面,点号.在冒号:前面。)

直接排序:
def get_coach_data(filename):
try:
with open(filename) as fn:
data=fn.readline()
temp_data=data.strip().split(',') #方法串链
return (sorted(temp_data))
except IOError as ioe:
print('File Error: '+str(ioe))
return (None)
james=get_coach_data('./data/james.txt')
print(james)
结果:

我们可以自定义一个函数sanitize()来处理列表项,统一下格式问题。
1,列表迭代
#列表迭代
def sanitize(time_string):
if '-'in time_string:
spliter='-'
elif ':' in time_string:
spliter=':'
else:
return (time_string)
(mins,secs)=time_string.split(spliter)
return (mins +'.'+secs) with open('./data/james.txt') as j:
data=j.readline()
temp_james=data.strip().split(',')
james=[]
for a in temp_james:
james.append(sanitize(a))
print(james)
这里我们将一个列表转换为另一个列表要做4件事:
创建一个新列表来存放转换后的数据,迭代处理原列表中的各个数据项,每次迭代时完成转换,将转换后的数据追加到新列表。

2,列表推导
列表推导也可以完成上面的功能(排序)。
#列表推导
def sanitize(time_string):
if '-'in time_string:
spliter='-'
elif ':' in time_string:
spliter=':'
else:
return (time_string)
(mins,secs)=time_string.split(spliter)
return (mins +'.'+secs) with open('./data/james.txt') as j:
data=j.readline()
temp_james=data.strip().split(',')
james=[sanitize(i) for i in temp_james] #列表推导
print(james)
这里不需要append()方法。
处理好数据后来进行排序,分析所给的数据发现里面有重复项,我们可以用set()来进行处理。
#列表去重
def sanitize(time_string):
if '-'in time_string:
spliter='-'
elif ':' in time_string:
spliter=':'
else:
return (time_string)
(mins,secs)=time_string.split(spliter)
return (mins +'.'+secs) with open('./data/james.txt') as j:
data=j.readline()
temp_james=data.strip().split(',')
james=[sanitize(i) for i in temp_james]
unique_james=[]
for j in james:#使用迭代删除重复
if j not in unique_james:
unique_james.append(j)
print(unique_james[0:3]) #列表分片
print(sorted(set(james)))#使用集合删除重复
运行结果如下:

我们可以将打开文件部门放在一个自定义的函数里:
def get_coach_data(filename):
try:
with open(filename) as fn:
data=fn.readline()
temp_data=data.strip().split(',')
f_data=[sanitize(d) for d in temp_data]
return (f_data)
except IOError as ioe:
print('File Error: '+str(ioe))
return (None) james=get_coach_data('./data/james.txt')
附:列表数据。
Head First Python-Python简单处理文件的更多相关文章
- Python通过简单的文件读写,来实现注册登录
# -*- coding:utf-8 -*- '''''' username = input('请输入您的姓名:') password = input('请输入密码:') with open('get ...
- python反转字符串(简单方法)及简单的文件操作示例
Python反转字符串的最简单方法是用切片: >>> a=' >>> print a[::-1] 654321 切片介绍:切片操作符中的第一个数(冒号之前)表示切片 ...
- python使用简单http协议来传送文件
python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...
- python第一天(文件流以及控制流)简单总结
第一天的python学习主要是: (1)对python的一个大致了解 值得注意的是在window下开发要注意path的问题. (2)对python控制流的一个了解 常用的if ,while ,for ...
- python中简单文件的输入三种方式
最近在自学python,简单的总结了一下文件的输入的方式. 1. f=open("foo.txt") line=f.readline() while line: print(lin ...
- Python实现简单登陆验证(文件操作)
利用python编写一个简单的登陆验证 代码主要功能: 利用Python实现简单的登陆验证,代码主要有两个部分组成: 第一部分:登陆页面,作用是实现用户名和密码的输入 利用两个输入函数input()来 ...
- Python的网络编程[5] -> BOOTP + TFTP + FTP -> 实现一个简单的文件传输流程
BOOTP-TFTP-FTP 目录 文件传输流程 服务器建立过程 客户端建立过程 1 文件传输流程 / File Transfer Flow 利用BOOTP,TFTP,FTP三种传输协议,建立起客户端 ...
- 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理
服务器文档下载zip格式 刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...
- Python 实现简单的 Web
简单的学了下Python, 然后用Python实现简单的Web. 因为正在学习计算机网络,所以通过编程来加强自己对于Http协议和Web服务器的理解,也理解下如何实现Web服务请求.响应.错误处理以及 ...
- python批量处理excel文件数据
https://www.zhihu.com/question/39299070?sort=created 作者:水中柳影链接:https://www.zhihu.com/question/392990 ...
随机推荐
- Fork别人的代码 原作者更新后如何同步
给主题的fork加一个remote 给 fork 配置一个 remote 使用 git remote -v 查看远程状态 ➜ next git:(master) git remote -v origi ...
- Beta 冲刺(1/7)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(1/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 团队完成测试答辩 整理博客 复习接口 接下来的 ...
- 解决jenkins构建job报错“NoClassDefFoundError” in jenkins/scm/RunWithSCM问题
现象 使用Jenkins 2.8,当我运行一个简单的Jenkins工作时,构建一个job获取源代码,出现下面的错误 FATAL: jenkins/scm/RunWithSCM java.lang.No ...
- activiti 涉及的内容
1 JAVA 委派模式(Delegate) https://blog.csdn.net/mayaofr/article/details/52082665 2 Activiti中的activiti:ex ...
- 七天开发进度(七)(微信小程序版(二)记账本)
终于把小程序版弄完了,不过这并不能称之为是我的作品,因为我还没有彻底学会小程序,对JavaScript语言还有很多不会的地方,没有掌握, 这次的程序是通过学习网上的多个教程,多个案例结合拼凑模仿者人家 ...
- uboot、内核、根文件系统启动流程
[1]Uboot的启动流程 Uboot的启动分为两个阶段. 第一阶段:设置异常向量表,设置ARM核为svc模式,关cache和关mmu, 关看门狗,初始化时钟,串口,内存,初始化栈空间,清bss ...
- 如何解决 kubernetes 重启后,启来不来的问题
参考了 https://blog.csdn.net/nklinsirui/article/details/80855415 最近在调研 kubeneter ,准备把线上的服务器架构再调整下,然后模拟各 ...
- 解决git反复输入密码的问题
打开git命令面板 cd到项目根目录 $ git config --global credential.helper store然后只输入一次密码,后面就不需要了
- Scala的泛型
类比java中的泛型: 上界(协变).下界(逆变) scala中泛型采用中括号声明 val array = Array[Int](,,,) array() //声明什么类型就返回什么类型 //test ...
- Linux内核原理与分析-第二周作业
写之前回看了一遍秒速五厘米:如果