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 ...
随机推荐
- CMake set 语法
参考CMake官方文档:https://cmake.org/cmake/help/v3.14/command/set.html 1. 普通变量 set(<variable> <val ...
- find xargs 简单组合使用
简单总结下,留作自己以后拾遗...... 一.find xargs 简单组合 ## mv 小结find ./ -type f -name "*.sh"|xargs mv -t /o ...
- RSF 分布式 RPC 服务框架的分层设计
RSF 是个什么东西? 一个高可用.高性能.轻量级的分布式服务框架.支持容灾.负载均衡.集群.一个典型的应用场景是,将同一个服务部署在多个Server上提供 request.response 消息通知 ...
- jquery 第三章
1.回顾$(document).ready(function(){ })$(function(){ }) ID选择器.类选择器.元素选择器层次选择器:空格(上文下:tr td{})属性过滤 ...
- 使用SqlServer_Profiler跟踪慢查询
使用SQLProfiler(事件探查器)跟踪数据库操作及慢查询 1:应用程序连接SQL SERVER数据库服务器: 2:打开SQL Profiler开启数据库事件跟踪: (1):打开SQL Serve ...
- 利用web.py快速搭建网页helloworld
访问web.py官网 http://webpy.org/ 根据网站步骤,利用 pip install web.py 若没有 PIP 则先安装pip 运行 sudo apt-get install py ...
- ORACLE 根据 sql_id 查询绑定变量的传入值
查询当前查询: select b.NAME,b.POSITION,b.DATATYPE_STRING,b.VALUE_STRING,b.LAST_CAPTUREDfrom v$sql_bind_cap ...
- 将LibreOffice文档转换为豆瓣日记
豆瓣日记的编辑器一直以来都只支持纯文本的,因此无法将原先在LibreOffice中写的带有简单格式的文章导出.由于我在豆瓣主要写一些随笔性的内容,所以它们在LibreOffice中排版时也并未用到什么 ...
- c_数据结构_队的实现
# 链式存储#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100//存储空间初始分配量 #defin ...
- Unix历史及相关概念回顾
欢迎来到Unix的世界 很多人都用了很多年的Unix(其实更熟悉的是叫Linux),也接触到Unix世界中的各种概念,比如GCC.GNU.BSD.POSIX.GPL等等,也大都知道一些传奇的如雷贯耳的 ...