Python对文本里面的内容排序

读取文本里的内容,并排序,再写入文本比如一个文本里面有5KB,100KB,1MB,3MB9MB2MB等等要求排序。求解惑。。。。... 读取文本里的内容,并排序,再写入文本比如一个文本里面有5KB ,100KB ,1MB,3MB 9MB 2MB等等要求排序。求解惑。。。。 展开
 我来答
H_Y_H
推荐于2018-05-09 · TA获得超过154个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:197万
展开全部

把文本的格式贴出来看看

假设格式是:

5KB

100KB

1MB

3MB

9MB

2MB


可用下面的程序(python3)

units={"KB" : 1, "MB" : 1024}
def calc(x):
    for unit, amount in units.items():
        if x.find(unit)>0:
            number=int(x[:-2])
            number*=amount
            return number
            
file=open("sort.txt", "r")
values=list(file)
file.close()
values=[ value[:-1] for value in values]
values.sort(key=calc)
print(values)
values=[value+"\n" for value in values]
file=open("sort.txt", "w")
file.write("".join(values))
file.close()
追问
2.7怎么弄呢。。
追答
print(values) 改成 print values
bdwisyou7d
2013-06-26 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1073万
展开全部
先需要转换啊。将KB,MB都转换成计算机可以读的数据 1024, 1024*1024, 然后就可以排序了。

s="5KB,100KB,1MB,3MB,9MB,2MB"
s=s.replace("KB","*1024").replace("MB","*1024*1024")
ss=[c.strip() for c in s.plit(",") if c.strip()]
ss=map( eval, ss)
ss.sort()

当然你还可以将5120这样的数字转换成5KB, 这样更容易读,办法就是用1024除,直到小于1024
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kisszg
2013-06-26
知道答主
回答量:5
采纳率:0%
帮助的人:7511
展开全部
文本.sort()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式