Python系列-格式化数据并排序

目的:将几个记录时间时刻的数据格式化统一,然后进行排序。

1.前提

有四个文件,文件的格式都不一样,都表示时间

james.txt

‘2-34‘, ‘3:21‘, ‘2.34‘, ‘2.45‘, ‘3.01‘, ‘2:01‘, ‘2:01‘, ‘3:10‘, ‘2-22‘

julie.txt

‘2.59‘, ‘2.11‘, ‘2:11‘, ‘2:23‘, ‘3-10‘, ‘2-23‘, ‘3:10‘, ‘3.21‘, ‘3-21‘

mikey.txt

‘2:22‘, ‘3.01‘, ‘3:01‘, ‘3.02‘, ‘3:02‘, ‘3.02‘, ‘3:22‘, ‘2.49‘, ‘2:38‘

sarah.txt

‘2:58‘, ‘2.58‘, ‘2:39‘, ‘2-25‘, ‘2-55‘, ‘2:54‘, ‘2.18‘, ‘2:55‘, ‘2:55‘

2.格式化数据

四个文件格式不统一,时间点之间有‘.’,有‘:’,还有‘-’,先使用一个函数将其转化为:全是’.’的格式,如:‘3.01’,代码如下:

def sanitize(time_string):
    if ‘-‘ in time_string:
        splitter = ‘-‘
    elif ‘:‘ in time_string:
        splitter = ‘:‘
    else:
        return(time_string)
    (mins, secs) = time_string.split(splitter)
    return(mins + ‘.‘ + secs)

截图代码如下:

3.排序

python中排序有两种,一种是直接sort(list),另外一种是使用sorted(list)。

第一种会直接覆盖原来的数据,第二种是新建一个副本将数据放进去,原来的变量值不变。

整体代码如下:

with open(‘james.txt‘) as jaf:
    data = jaf.readline()
james = data.strip().split(‘,‘)

with open(‘julie.txt‘) as juf:
    data = juf.readline()
julie = data.strip().split(‘,‘)

with open(‘mikey.txt‘) as mif:
    data = mif.readline()
mikey = data.strip().split(‘,‘)

with open(‘sarah.txt‘) as saf:
    data = saf.readline()
sarah = data.strip().split(‘,‘)

print(sorted([sanitize(t) for t in james]))
print(sorted([sanitize(t) for t in julie]))
print(sorted([sanitize(t) for t in mikey]))
print(sorted([sanitize(t) for t in sarah]))

4.测试结果

截图代码:

上面的后面三局是将for循环和排序写在一起了,比较如下图:

说明:这个格式真的是有点虐心,不按照找个格式输出,IDLE还报错,我真的是无语了,调试了好久,代码没问题,就是格式问题。让我揪心呀。比如下面这幅图:

测试结果数据:

[‘2.01‘, ‘2.01‘, ‘2.22‘, ‘2.34‘, ‘2.34‘, ‘2.45‘, ‘3.01‘, ‘3.10‘, ‘3.21‘]
[‘2.11‘, ‘2.11‘, ‘2.23‘, ‘2.23‘, ‘2.59‘, ‘3.10‘, ‘3.10‘, ‘3.21‘, ‘3.21‘]
[‘2.22‘, ‘2.38‘, ‘2.49‘, ‘3.01‘, ‘3.01‘, ‘3.02‘, ‘3.02‘, ‘3.02‘, ‘3.22‘]
[‘2.18‘, ‘2.25‘, ‘2.39‘, ‘2.54‘, ‘2.55‘, ‘2.55‘, ‘2.55‘, ‘2.58‘, ‘2.58‘]

默认地,sort()方法和sorted() BIF都会按升序对数据进行排序。要以降序对数据进行排序,需要向sort()或sorted()传入参数reverse=Treue,python会负责具体处理。

参考书籍:《Head First Python》Barry.

时间: 2024-10-12 20:07:24

Python系列-格式化数据并排序的相关文章

Python系列教程大汇总

Python初级教程 Python快速教程 (手册) Python基础01 Hello World! Python基础02 基本数据类型 Python基础03 序列 Python基础04 运算 Python基础05 缩进和选择 Python基础06 循环 Python基础07 函数 Python基础08 面向对象的基本概念 Python基础09 面向对象的进一步拓展 Python基础10 反过头来看看 Python补充01 序列的方法 Python中级教程 Python进阶01 词典 Pytho

基本排序系列之计数排序

简述计数排序 看了好多别人写的计数排序,看了好久都没看懂,弄了好久最后发现这么简单居然花了几个小时,所以在这里写上,希望和我一样的初学者不会再绕弯路. 一.简述计数排序的思想: 设被排序的数组为A,排序后存储到B,C为临时数组.所谓计数,首先是通过一个数组C[i]计算大小等于i的元素个数,此过程只需要一次循环遍历就可以:在此基础上,计算小于或者等于i的元素个数,也是一重循环就完成.下一步是关键:逆序循环,从length[A]到1,将A[i]放到B中第C[A[i]]个位置上.原理是:C[A[i]]

Python list列表的排序

当我们从数据库中获取一写数据后,一般对于列表的排序是经常会遇到的问题,今天总结一下python对于列表list排序的常用方法: 第一种:内建函数sort() 这个应该是我们使用最多的也是最简单的排序函数了,可以直接对列表进行排序 用法: list.sort(func=None, key=None, reverse=False(or True)) 对于reverse这个bool类型参数,当reverse=False时:为正向排序:当reverse=True时:为方向排序.当然默认为False. 执

python实现分治法排序

# -*- coding: utf-8 -*- """ Created on Wed May 14 16:14:50 2014 @author: lifeix """ def merge(a, start, mid, end): if start == end: return a if mid == 0: return a temp1 = a[start:mid] m1 = len(temp1)/2 print temp1,'----',m1 n

Python系列之 __new__ 与 __init__

很喜欢Python这门语言.在看过语法后学习了Django 这个 Web 开发框架.算是对 Python 有些熟悉了.不过对里面很多东西还是不知道,因为用的少.今天学习了两个魔术方法:__new__ 和 __init__. 开攻: 如果对 Python 有所简单了解的话应该知道它包含类这个概念的.语法如下: class ClassName: <statement - 1>: . . . <statement - N> 问题来了.像我们学习的 C# 或是 Java 这些语言中,声明类

【python系列】SyntaxError:Missing parentheses in call to &#39;print&#39;

打印python2和python3的区别 如上图所示,我的 PyCharm安装的是python3.6如果使用print 10会出现语法错误,这是python2.x和python3.x的区别所导致的. [python系列]SyntaxError:Missing parentheses in call to 'print'

初探接口测试框架--python系列7

点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期待的方向,有更多兴趣的欢迎切磋,我们微信订阅号,联系方式如下: 更多书籍,敬请期待 背景说明 python系列课程也有段时间了,我们坚持,一步步来,今天是最后一课的分享,看看接口测试框架的神秘,小怪带领着大家一起完成第7课,希望能看完知识点,自己动手练习,然后和给出的例子代码对比,最后看看作业

总结整理 -- python系列

python系列 python--基础学习(一)开发环境搭建,体验HelloWorld python--基础学习(二)判断 .循环.定义函数.继承.调用 python--基础学习(三)字符串单引号.双引号.三引号 python--基础学习(四)自然字符串.重复字符串.子字符串 python--基础学习(五)参数位置传递.关键字传递.包裹传递及解包裹 python--基础学习(六)sqlite数据库基本操作 python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨 python--

Python基于比较的排序

排序是算法学习中最基本的问题. 1.平均时间复杂度均为O(N2)的排序 1.1 插入排序 插入排序对少量元素的排序非常有效.工作机制就像打牌一样,为了将牌插入到已排好序的牌中,需要将牌与手中的牌从右向左进行比较. def insertionSort(alist): n=len(alist) for i in xrange(1,n): key=alist[i] j=i-1 while j>=0 and alist[j]>=key: alist[j+1]=alist[j] j-=1 alist[j