根据 header python 的名称和数量订购原料
order raws based on name and number of header python
我有一个 csv 文件,其中包含不同大小的原始文件,其中包含值和每个原始文件的 header。
00_A1_s1
00_A1_s2
00_A1_s3
04_A1_s1
04_A1_s2
04_A1_s3
08_A1_s1
08_A1_s2
08_A1_s3
我想按名称对原料进行分组,然后按坐标前的数字排序
00_A1_s1
04_A1_s1
08_A1_s1
00_A1_s2
04_A1_s2
08_A1_s2
00_A1_s3
04_A1_s3
08_A1_s3
谢谢!
您可以使用带有 key
参数的 sort
内置函数,它接受一个函数,您可以在其中推断元素的顺序条件。它 returns 一个新列表。
# file names
l = """00_A1_s1
00_A1_s2
00_A1_s3
04_A1_s1
04_A1_s2
04_A1_s3
08_A1_s1
08_A1_s2
08_A1_s3"""
l = l.split('\n') # file names as list
# sort wrt the last group of characters
print(sorted(l, key=lambda p: p.split('_')[-1]))
输出
04_A1_s1
08_A1_s1
00_A1_s2
04_A1_s2
08_A1_s2
00_A1_s3
04_A1_s3
08_A1_s3
您可以使用 sorted
并使用 tuple
来排序最重要的每个项目,如下所示:
txt = """00_A1_s1
00_A1_s2
00_A1_s3
04_A1_s1
04_A1_s2
04_A1_s3
08_A1_s1
08_A1_s2
08_A1_s3"""
lst = txt.split('\n')
def orderSort(item):
splt_itm = item.split('_')
# first sorting on `A*` then on `s*` and at end consider number
return (splt_itm[1] , splt_itm[2] , splt_itm[0])
result = sorted(lst, key=orderSort)
print('\n'.join(result))
输出:
00_A1_s1
04_A1_s1
08_A1_s1
00_A1_s2
04_A1_s2
08_A1_s2
00_A1_s3
04_A1_s3
08_A1_s3
我有一个 csv 文件,其中包含不同大小的原始文件,其中包含值和每个原始文件的 header。
00_A1_s1
00_A1_s2
00_A1_s3
04_A1_s1
04_A1_s2
04_A1_s3
08_A1_s1
08_A1_s2
08_A1_s3
我想按名称对原料进行分组,然后按坐标前的数字排序
00_A1_s1
04_A1_s1
08_A1_s1
00_A1_s2
04_A1_s2
08_A1_s2
00_A1_s3
04_A1_s3
08_A1_s3
谢谢!
您可以使用带有 key
参数的 sort
内置函数,它接受一个函数,您可以在其中推断元素的顺序条件。它 returns 一个新列表。
# file names
l = """00_A1_s1
00_A1_s2
00_A1_s3
04_A1_s1
04_A1_s2
04_A1_s3
08_A1_s1
08_A1_s2
08_A1_s3"""
l = l.split('\n') # file names as list
# sort wrt the last group of characters
print(sorted(l, key=lambda p: p.split('_')[-1]))
输出
04_A1_s1
08_A1_s1
00_A1_s2
04_A1_s2
08_A1_s2
00_A1_s3
04_A1_s3
08_A1_s3
您可以使用 sorted
并使用 tuple
来排序最重要的每个项目,如下所示:
txt = """00_A1_s1
00_A1_s2
00_A1_s3
04_A1_s1
04_A1_s2
04_A1_s3
08_A1_s1
08_A1_s2
08_A1_s3"""
lst = txt.split('\n')
def orderSort(item):
splt_itm = item.split('_')
# first sorting on `A*` then on `s*` and at end consider number
return (splt_itm[1] , splt_itm[2] , splt_itm[0])
result = sorted(lst, key=orderSort)
print('\n'.join(result))
输出:
00_A1_s1
04_A1_s1
08_A1_s1
00_A1_s2
04_A1_s2
08_A1_s2
00_A1_s3
04_A1_s3
08_A1_s3