一个python小程序,从文本文件中读取每行的两组数字,进行排序后输出.
来源:互联网 发布:钢结构雨棚计算软件 编辑:程序博客网 时间:2024/04/29 08:12
qq组里面有人问的,本身是很简单的,写出来玩玩:
文本文件x.txt的内容是
122222 8613332000566
10 8613032222202
103335 8613011318800
1000 8613132546186
10000 8613312073654
100000 8613034348185
100001 8613034332328
10005 8613194682965
100003 8613102251300
100006 8613032226257
100005 8613116000937
两个数字之间隔了一个'/t'
f=open('x.txt') #如果你的x.txt文件不在python的路径下,那么必须用绝对路径
l1=f.readlines() #这时候l1的结果是一个list,每个元素是文件的每一行,包括转行符号'/n'
l1=[x.split('/t') for x in l1]
l1=[[x[0],x[1].replace('/n','')] for x in l1] #这里去掉了每行的'/n'符号
f.close() #关闭刚才打开的文件
#现在的l1 是一个这样的list:它的每个元素也是一个list,后者的两个元素分别存放了文件每行的第一和第二列数字
f=('y.txt','w')#新建一个可写的文本文件,用来存放结果
#这时直接利用l1.sort()排序的结果不知道为何总是有错误,.那个10005 总是排到倒数第三个位置,真奇怪,只有转化为int型再排序了
l2=[[int(x[0]),int(x[1])] for x in l1]
l2.sort()
l2=[str(x[0])+'/t'+str(x[1])+'/n' for x in l2]
f.writelines[l2]
f.close()
最后y.txt的结果是:
10 8613032222202
1000 8613132546186
10000 8613312073654
10005 8613194682965
100000 8613034348185
100001 8613034332328
100003 8613102251300
100005 8613116000937
100006 8613032226257
103335 8613011318800
122222 8613332000566
结果根据第一列的数字进行排序.
注:假如直接对l1.sort(),结果是:
10 8613032222202
1000 8613132546186
10000 8613312073654
100000 8613034348185
100001 8613034332328
100003 8613102251300
100005 8613116000937
100006 8613032226257
10005 8613194682965
103335 8613011318800
122222 8613332000566
很奇怪
如果是直接在命令行操作,具体步骤如下:
>>> f=open('x.txt')
>>> l1=f.readlines()
>>> l1
['122222/t8613332000566/n', '10/t8613032222202/n', '103335/t8613011318800/n', '1000/t8613132546186/n', '10000/t8613312073654/n', '100000/t8613034348185/n', '100001/t8613034332328/n', '10005/t8613194682965/n', '100003/t8613102251300/n', '100006/t8613032226257/n', '100005/t8613116000937']
>>> l1=[x.split('/t') for x in l1]
>>> l1
[['122222', '8613332000566/n'], ['10', '8613032222202/n'], ['103335', '8613011318800/n'], ['1000', '8613132546186/n'], ['10000', '8613312073654/n'], ['100000', '8613034348185/n'], ['100001', '8613034332328/n'], ['10005', '8613194682965/n'], ['100003', '8613102251300/n'], ['100006', '8613032226257/n'], ['100005', '8613116000937']]
>>> f.close()
>>> l1=[[int(x[0]),int(x[1])] for x in l1]
>>> l1
[[122222, 8613332000566L], [10, 8613032222202L], [103335, 8613011318800L], [1000, 8613132546186L], [10000, 8613312073654L], [100000, 8613034348185L], [100001, 8613034332328L], [10005, 8613194682965L], [100003, 8613102251300L], [100006, 8613032226257L], [100005, 8613116000937L]]
>>> l1.sort()
>>> l1
[[10, 8613032222202L], [1000, 8613132546186L], [10000, 8613312073654L], [10005, 8613194682965L], [100000, 8613034348185L], [100001, 8613034332328L], [100003, 8613102251300L], [100005, 8613116000937L], [100006, 8613032226257L], [103335, 8613011318800L], [122222, 8613332000566L]]
>>> f=open('y.txt','w')
>>> f.writelines([str(x[0])+'/t'+str(x[1])+'/n' for x in l1])
>>> f.close()
>>>
- 一个python小程序,从文本文件中读取每行的两组数字,进行排序后输出.
- 从文本文件中读取数据排序并输出到文本
- 代码回顾:从一个文本文件中读取一行的内容,进行数据处理。
- 如何从一个文件特定段落中(文本文件),读取相关的文件信息,并进行分段梳理
- 读文本文件的每一行 取每行最后一个空格后的子串
- 一个从键盘读入数字并排序的程序
- 读取从a.txt中读取一个字符串,排序后写入b.txt文件中
- 从标准输入中读取几行输入,每行输入都要打印到标准输出上,前面要加上行号。在编写这个程序时要是图让程序能够处理的输入行的长度没
- 编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面要加上行号。
- 编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。
- 小程序:输入1-1000以内的数字,除7余5,除5余1,每行输出8个数字
- 从文件中读取数字并排序
- python登陆百度网盘并读取自己的所有文件,输出到文本文件中
- 收集两个C++写的从文本文件中读取数据保存到数组的程序
- 从文件中读取学生成绩,进行等级划分,并输出至另外一个文件中
- 从一个表格文件中录入信息,进行计算后,在文件中输出这个表格
- 从文本文件中读取数据
- 从文本文件中读取数据
- 040902 R Internet 's resource (Page Link)
- Visual Studio.NET快捷键
- BBS 设计思路系列 ---- 客户端程序需要提供哪些功能
- Most useful books for me each year
- 看一个人是否快乐,不要看笑容
- 一个python小程序,从文本文件中读取每行的两组数字,进行排序后输出.
- 女朋友对男性程序员的20大感受
- BBS 设计思路系列 ---- 论坛制度功能到底是应该是简单还是复杂??
- BBS 设计思路系列 ---- 抛弃多皮肤机制,只提供一套皮肤机制。
- 1999年地下旋舞
- 写了个下载程序 支持Socks5代理
- RSS 与 blog 阅读器:什么是 RSS 与 Atom ?
- 电脑问题DIY[z]
- 第14届Jolt大奖揭晓