问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python排序问题,给出一个txt文件,怎样按分数高低进行排序?

发布网友 发布时间:2022-04-25 07:39

我来回答

4个回答

热心网友 时间:2022-04-19 01:33

把你每条数据的格式发出来看下。
不然不好弄。

其实就是通过正则表达式等方式,把分数提取出来,然后排序就行了。

给你两个函数,你自己组合吧

#构建一个列表,filename是你txt文件的路径,构建的列表,按照分数进行排序并返回,参数reverse为False则为升序,为True则为降序

def build_list(filename):
import re

reslist = []

fp = open(filename)
textlist = fp.readlines()
fp.close()

pattern = re.compile("(\\d*)\\.\\s*(\\d*\\.\\d*)\\s*([\\s\\S]*(?=\\(\\d*\\)))\\((\\d*)\\)\\s*([\\w,]*)")

for text in textlist:
pr = pattern.search(text)
if pr:
reslist.append((pr.group(1),pr.group(2),pr.group(3),pr.group(4),pr.group(5)))

reslist.sort(key = lambda x:float(x[1]))
return reslist

#根据输入的year参数,返回year年度的电影资料的列表,year为字符串,movielist为使用上面的build_list函数生成的列表
def list_movie_by_year(movielist,year):
return [x for x in movielist if x[3] == year]

如,你数据的路径为d:\data.txt

sorted_list = build_list('d:/data.txt')

想找1993年的数据,
则调用函数
list_movie_by_year(sorted_list,'1993')

热心网友 时间:2022-04-19 02:51

比如你的文件叫做film.txt吧。
import re
time="1994" #查询的年份
for i in open("film.txt","r"):
if re.search("(%s)"%time,i):
print i

#前提是年份都是(1985)这种样子,如果括号不一定有的话,把括号去掉估计也行

热心网友 时间:2022-04-19 04:26

竟然有人在知道问作业。。。不知道这题是老师自己出的么。。。

热心网友 时间:2022-04-19 06:17

import string
import math

file=open('top250.txt','r')

file.readline()
file.readline()

order=range(250)
for i in order:
s=file.readline()
k=s.split()
order[i]=k

year=int(raw_input('please input a year'))

total=0

for m in order:
str_year=m[len(m)-2]
s_year=int(str_year[1:5])
if year==s_year:
total=total+1

i=0
indexing=range(total)
for m in order:
str_year=m[len(m)-2]
s_year=int(str_year[1:5])
if year==s_year:
indexing[i]=m
i=i+1

i=0
while total>0:
m=0
while m<total-1:
if indexing[m][2]>indexing[m+1][2]:
s=indexing[m]
indexing[m]=indexing[m+1]
indexing[m+1]=s
m=m+1
total=total-1

def letter(list,pop):
letter=list[pop][2]
return letter[0]

def fen(list0,pop0):
st=list0[pop0][1]
return float(st)

i=0
while i<400:
x=0
while x<len(indexing)-1:
if letter(indexing,x)==letter(indexing,x+1):
if fen(indexing,x)<fen(indexing,x+1):
y=indexing[x]
indexing[x]=indexing[x+1]
indexing[x+1]=y
x=x+1
i=i+1

def vott(list1,pop1):
s=list1[pop1][-1]
e=string.split(s,',')
return int(e[0])*1000+int(e[1])

w=0
while w<300:
x=0
while x<len(indexing)-1:
if letter(indexing,x)==letter(indexing,x+1):
if math.fabs(fen(indexing,x)-fen(indexing,x+1))<10**(-2):
if vott(indexing,x)<vott(indexing,x+1):
g=indexing[x]
indexing[x]=indexing[x+1]
indexing[x+1]=g
x=x+1
w=w+1

i=0
while i<len(indexing):
o=indexing[i]
string1=string.join(o)
print string1
i=i+1
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
三星8英寸平板电脑三星8英寸平板电脑哪个型号好 长城第一墩文化景区-讨赖河吊桥地址在哪里? 珲春景点简介 夏季需要加防冻液吗? 抽血感染艾滋病的概率 清洁剂的作用有哪些 日化产品抗菌抑菌效果怎样 杠杆高低有什么区别 姓赵取什么名字好 赵姓男孩女孩取名字大全 赵姓好听顺口的女孩名字女孩姓赵有气质名字 在python中按升序输出2~300间的素数并按降序输出2~300间的素数该怎么做? 输入一个序列,判断这个序列是升序,降序还是无序.python Python列表升序降序?不会的麻烦别回答!!回答了就不会再推送了 CAD免费中文版哪个版本好用 CAD免费中文版哪个版本方便使用 CAD免激活中文版下载地址!(无病毒) Auto CAD 2007简体中文版 免费下载-免激活版 称呼男孩子,可以在他名字后面加“酱”吗? 给男孩起名字天字后面什么 给男孩起名字天字后面什么? 男孩子名字,姓周,要求后面两个字带有富有、潇洒开朗之意 男孩子名字,唐福,后面加一个什么字好一点 本人姓汤:想找一个男孩子的名字:后面两个字要一样的 男孩子名字王珂后面加个什么字? 谁帮想一些 好听的男孩子名字 谢谢 谢谢 后面两个字 小孩是男孩,姓刘,我想取的名字后面是子,中间取个什么字比较好听呢 教师招聘考试和教师资格证考试的考试内容是一样的吗? 教师招聘主要考什么呢?和教师资格有有什么差别? 教师招聘和教师资格是一个考试吗?考的科目一样吗? 教师招聘考试和教师资格证考试的区别在哪? 在Python中实现函数reverse,number(),判断三位数ABC是否为“降序数”? 微信直播里面的情感电台是真是假 微信直播里面的桃花岛,火箭,鲤鱼,牛气冲天分别是多少豆,怎么没有显示,以前都有? 为什么有的文件夹是半透明的?谁知道这些文件夹是什么用的!附图! 微信直播里面送礼物怎么送多份 透明文件夹如何创建! 微信直播间怎么添加图片呢? Win10系统怎样让文件夹图标变成透明的操作法 微信直播进入直播间对方手机会显示什么 Win10如何让文件夹图标变成透明 为什么我的电脑里有些文件夹的右下角有个半透明的图片? 微信直播间怎么送灯牌 win10怎么设置文件夹打开后背景透明 如图,C盘中出现透明的文件夹和文件,文件上有系统还原文件碎片,请问是否正常? mac苹果电脑文件夹中的透明图片有白色的底怎么去除? 电脑文件夹里好多透明文件是什么东西 硬盘里有的文件夹图标变成透明的了怎么办? QQ上我开启了我的电量为什么不显示? vivox30怎么在qq上显示手机电量? qq分组好友里显示电量怎么设置