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 ...
随机推荐
- JS 禁用鼠标右键
oncontextmenu="window.event.returnValue=false" style="overflow-y: hidden; overflow-x: ...
- JAVA中的栈和堆【转】
原文链接 https://www.cnblogs.com/ibelieve618/p/6380328.html JAVA在程序运行时,在内存中划分5片空间进行数据的存储.分别是:1:寄存器.2:本地方 ...
- 网络流24题——分配问题 luogu 4014
题目链接:这里 本题是一个典型的费用流问题,可以作为费用流建图模板使用 首先看到,每个人只能做一件工作,每件工作只能做一次,一个人做某件工作有一定的收益 那么我们建立一个超级源点st和超级终点ed,然 ...
- ThreadLocal, HandlerThread, IntentService
1. ThreadLocal用法详解和原理https://www.cnblogs.com/coshaho/p/5127135.html // ThreadLocal methods: public T ...
- 探索Visual Studio生成的.vs文件夹内部结构和作用
这里直接先将我摸索出的结果贴出来,文章后面会一一详细说明和分析:.vs目录是用来存储当前用户在解决方案中的工作配置,具体包括VS关闭前最后的窗口布局.最后打开的选项卡/操作记录/文件文档.某些自定义配 ...
- UOJ#110. 【APIO2015】Bali Sculptures 贪心 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ110.html 题解 我们发现n=2000 的子任务保证A=1! 分两种情况讨论: $n\leq 100$ ...
- 微服务化不同阶段 Kubernetes 的不同玩法
本文由 网易云发布. 作为容器集群管理技术竞争的大赢家,Kubernetes 已经和微服务紧密联系,采用 Kubernetes 的企业往往都开始了微服务架构的探索.然而不同企业不同阶段的微服务实践面 ...
- js检测访问设备
if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) { }
- Java开发人员必须掌握的Linux命令-学以致用(5)
================================================= 人工智能教程.零基础!通俗易懂!风趣幽默!大家可以看看是否对自己有帮助! 点击查看高清无码教程 == ...
- 动态规划——Edit Distance
大意:给定两个字符串word1和word2,为了使word1变为word2,可以进行增加.删除.替换字符三种操作,请输出操作的最少次数 Example 1: Input: word1 = &quo ...