首页 > 解决方案 > 如何使用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())

我如何定义上面的代码以排序方式(基于第一列)编写最终文件?

标签: pythonsortingascii

解决方案


因此,您需要根据 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]]

我希望这将有所帮助。


推荐阅读