Head First Python-Python简单处理文件
1.Python的命令模式和交互模式2.Python笔记3.浅析python中的装饰器decorator4.Python网络编程-Socket简单通信(及python实现远程文件发送)5.python中的*args和**kw6.Python脚本之安装linux源码包-Jenkins7.Python 数据处理库pandas教程(最后附上pandas_datareader使用实例)8.Python 机器学习库 NumPy 教程9.Flask(python)异步(ajax)返回json格式数据10.Python爬虫之urllib-登录博客园11.(转载)python调用shell命令之os 、commands、subprocess12.Head First Python-python面向对象
13.Head First Python-Python简单处理文件
14.Head First Python-Python中与文件相关的操作-读、处理、写15.Python3实现自动查询成绩(主要使用的包有Tesseract-OCR、PIL、execjs、pytesseract、BeautifulSoup)16.Python数据挖掘之随机森林17.Python 绘图库Matplotlib入门教程前面介绍了自定义格式化输出列表函数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')
附:列表数据。
如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨小小打赏一下吧,如果囊中羞涩,不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
2015-09-07 IE升级代码时邮件内容