cambaluc的个人博客分享 http://blog.sciencenet.cn/u/cambaluc

博文

python文件读写及列表推导式应用示例

已有 3140 次阅读 2018-10-27 20:46 |个人分类:Python|系统分类:教学心得| python

 

    上课演示CSV文件读写及列表推导式用到的例子,记录一下。

  列表推导式相当于循环,简洁方便,速度也不慢。

     设有文件visit2017.txt,是CSV格式,存有一年的读者刷卡入馆记录,文件很大,其中一条如下:

“145022187   “,”张无忌”,”学生”,”2工程系”,”2017/1/1 9:06:55”

 

例一:查看是否有姓'','',''的同学

##import csv

##vs=open('D:\\图书馆读者\\visit2017.txt','r')

##rd=csv.reader(vs)

##print(type(rd))

##ls=list(rd)

##ls2=[i for i in ls if i[1][0] in ['','','']]

##ls3=['_'.join(i[0:4]) for i in ls2]

##set1=set(ls3)

##for row in set1:

##    print(row)

 

#例二:统计某班(学号是1650151*)各位入馆次数

##import csv

##vs=open('D:\\图书馆读者\\visit2017.txt','r')

##rd=csv.reader(vs)

##ls=list(rd)

##ls2=[[i[0].strip(),i[1],i[4]] for i in ls if i[0][0:7]=='1650151']

##counts={}#生成的是字典,不是集合

##for i in ls2:

##        counts[i[1]]=counts.get(i[1],0)+1  

            #get() "键"存在,返回"值",否则返回默认值0

##items=list(counts.items()) #返回键值对

##items.sort(key=lambda x:x[1],reverse=True)

##for i in items:

##        print(i[0],i[1])

#

 

###例三:生成某同学到馆时间区间(前后15秒),

##import csv

##from datetime import datetime

##vs=open('D:\\图书馆读者\\visit2017.txt','r')

##rd=csv.reader(vs)

###print(type(rd))

##ls=list(rd)

##ls2=[i for i in ls if i[1]=='张无忌']

##ls3=[ [i[0].strip(),i[1],datetime.strptime(i[4],'%Y/%m/%d %H:%M:%S').timestamp()] for i in ls2]

#注意时间字符串和时间戳的转换

##ls4time=[[i[2]-15,i[2]+15] for i in ls3]  #前后15秒

##

##for row in ls4time:

##    print(row)

###写入文件

##with open('D:\\图书馆读者\\zab_time.txt','w') as fp:

##    for i in ls4time:

##        fp.writelines(str(i[0])+','+str(i[1])+'\n')

 

###例四:某同学到馆时间和另一同学比,是否较一致

##import csv

##from datetime import datetime

##vs=open('D:\\图书馆读者\\visit2017.txt','r')

##rd=csv.reader(vs)

###print(type(rd))

##ls=list(rd)

##ls2=[i for i in ls if i[1]=='段誉']

##ls3=[ [i[0].strip(),i[1],datetime.strptime(i[4],'%Y/%m/%d %H:%M:%S').timestamp()] for i in ls2]

##ls4time=[[i[2]-300,i[2]+300] for i in ls3] #前后5分钟

##

##lsm2=[i for i in ls if i[1]=='王语嫣']

##lsm3=[datetime.strptime(i[4],'%Y/%m/%d %H:%M:%S').timestamp() for i in lsm2]

##s=0

##for i in lsm3:

##    for j in ls4time:

##        if j[0]<i<j[1]:

##            print(j[0],i,i-j[1],datetime.fromtimestamp(i).strftime('%Y/%m/%d %H:%M:%S') )

##            s+=1

##print(s)

 

           

#找和某同学访问时间一致的人

##import csv

##from datetime import datetime

##vs=open('D:\\图书馆读者\\visit2017.txt','r')

##rd=csv.reader(vs)

###print(type(rd))

##ls=list(rd)

##ls2=[i for i in ls if i[1]=='郭靖']

##ls3=[ [i[0].strip(),i[1],datetime.strptime(i[4],'%Y/%m/%d %H:%M:%S').timestamp()] for i in ls2]

##ls4time=[[i[2]-30,i[2]+30] for i in ls3]

##xh=set([i[0] for i in ls])

##lsxh=list(xh)

##countls=[]

##for xh in lsxh:   #多重循环,运行时间稍长

##        lsm2=[i for i in ls if i[0]==xh]

##        lsm3=[datetime.strptime(i[4],'%Y/%m/%d %H:%M:%S').timestamp() for i in lsm2]

##        s=0

##        for i in lsm3:

##            for j in ls4time:

##                if j[0]<i<j[1]:

##                     s+=1

##        if s>8:

##            countls.append([xh,s])

##for i in countls:

##    print(i)

 查得郭靖经常和黄蓉一起进馆,大数据时代要保护好数据才能保护隐私。



https://blog.sciencenet.cn/blog-797552-1143122.html

上一篇:合并文件的VB及Perl小程序
下一篇:北京胡同(五)_为啥称作“金秋”
收藏 IP: 61.149.220.*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-17 08:17

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部