一个python小程序,从文本文件中读取每行的两组数字,进行排序后输出.
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()
>>>
- 上一篇: JavaWeb各个框架的工作原理
- 下一篇: iOS 保留两位小数 不四舍五入