python - 如何使用python对ascii文件中列的值(从小到大)进行排序?
问题描述
我有一个包含以下列的 ASCII 文件:
ID, val1, val2, val3
其中 ID 是 row_number 但未排序。我想编写一个新的 ascii 文件,它具有相同的列,并且具有排序的 ID(从小到大)。
我怎么能在python中做到这一点?
事实上,这个文件是由 2 个 ascii 文件使用以下代码连接而成的:
import os.path
maindir1="/home/d01/"
maindir2="/home/d02/"
outdir="/home/final/"
pols=[ "F1","F2","F3" ]
months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
for ipol in pols:
for imonth in months:
for kk in range(1, 7):
template_args = {"ipol": ipol, "imonth": imonth, "kk": kk}
filename = "{ipol}_{imonth}_0{kk}_L1.txt".format(ipol=ipol, imonth=imonth, kk=kk)
out_name = os.path.join(outdir, filename)
in_names = [os.path.join(maindir1, filename), os.path.join(maindir2, filename)]
with open(out_name, "w") as out_file:
for in_name in in_names:
with open(in_name, "r") as in_file:
out_file.write(in_file.read())
我如何定义上面的代码以排序方式(基于第一列)编写最终文件?
解决方案
因此,您需要根据 Id 以升序对您拥有的 csv 格式的数据进行排序。您可以使用此功能来做到这一点
def Sort(sub_li):
sub_li.sort(key = lambda x: x[0])
return sub_li
x[0] 根据 Id 排序表示第一列,或者您可以根据您的用例进行更改。我把输入作为`
a = [["1a", 122323,1000,0],
["6a", 12323213,24,2],
["3a", 1233,1,3]]
所以,使用上面的函数我得到了输出
[['1a', 122323, 1000, 0],
['3a', 1233, 1, 3],
['6a', 12323213, 24, 2]]
我希望这将有所帮助。
推荐阅读
- extjs - 商店不在 ExtJs 中重新加载
- angular - 搜索 JSON 并获取密钥
- java - 无法找到具有给定名称的属性 - Spring Data JPA Projections、Hibernate 和 BaseEntity
- php - 在php中按级别4对关联数组进行排序
- php - 为什么我不能使用我的分析仪并得到“无法找到分析”的答案?
- java - ORA - 29532:PL/SQL 函数内部的 Java swing 调用
- swift - 如何在 SwiftUI 中的列表下方添加一个按钮?
- java - Java并发:我是否必须同步一个只检索状态而不修改它的方法?
- python-3.x - Python 可视化 - 直方图
- javascript - 理解 Ramda 中的组合?