test.csv
001_0004_1.bmp
002_0004_1.bmp
003_0004_1.bmp
004_0003_1.bmp
005_0003_1.bmp
006_0003_1.bmp
007_0002_1.bmp
008_0002_1.bmp
009_0002_1.bmp
010_0001_1.bmp
011_0001_1.bmp
012_0001_1.bmp
Supposons que vous ayez un nom de fichier comme le contenu de test.csv ci-dessus. Le fichier BMP décrit dans ce CSV a les conventions de dénomination suivantes (conventions de dénomination créées de manière appropriée),
FFF_TTTT_C.bmp
--F: numéro de cadre --T: une sorte d'index --C: Index de la chose dans l'image --Les nombres et index ci-dessus sont séparés par'_ '
Le contenu du fichier CSV ci-dessus est trié par numéro d'image, Pour certaines raisons
** "Je veux trier par un index de T!" **
Je suppose le tri lorsqu'un tel cas sort.
J'ai créé un programme avec l'idée. Si vous recherchez attentivement, la fonction Ippatsu Dawn! Je sens que je peux le faire avec ...
##
# coding:utf-8
##
import csv
import pprint as pp
##
#Trier par convention de dénomination
# inputlist:Liste à trier
# key_number:Spécifiez le nombre de chaînes à trier
# key_Renvoie une liste vide si le nombre dépasse le nombre de divisions dans la convention de dénomination
##
def Sort_by_Key(input_list,key_number,split='_'):
#Divisez le nom du fichier et convertissez-le au format tapple
file_sort = []
for t in input_list:
sp_t = t.split(split)
tap_sp_t = tuple(sp_t)
file_sort.append(tap_sp_t)
if len(file_sort[0]) < key_number:
return []
#Trier
file_sort.sort(key=lambda t: t[key_number])
#Collez le grand écart ensemble
output_file = []
for f in file_sort:
s = split.join(f)
output_file.append(s)
return output_file
def main():
#Lecture de fichiers
op = open('test.csv','r')
tpp = csv.reader(op)
#Extraire uniquement la première ligne de csv
test_file = []
for t in tpp:
test_file.append(t[0])
op.close()
#Commande originale
print("before")
pp.pprint(test_file)
file_save = Sort_by_Key(test_file,1)
print("\nafter")
pp.pprint(file_save)
#Conversion pour stockage
row = len(file_save)
col = 1
SaveList = [file_save[col * i: col * (i + 1)] for i in range(row)]
wp = open('output.csv','w')
writer = csv.writer(wp, lineterminator='\n')
writer.writerows(SaveList)
wp.close()
if __name__=="__main__":
main()
output.csv
010_0001_1.bmp
011_0001_1.bmp
012_0001_1.bmp
007_0002_1.bmp
008_0002_1.bmp
009_0002_1.bmp
004_0003_1.bmp
005_0003_1.bmp
006_0003_1.bmp
001_0004_1.bmp
002_0004_1.bmp
003_0004_1.bmp
[1] Lecture et écriture de CSV avec Python [2] Introduction aux listes, taples et dictionnaires Python [3] Python: à propos du tri des objets [4] Concaténer / scinder des chaînes de caractères avec Python: join (), split () [5] convert a flat list to list of list in python [6] Bibliothèque: pprint
Recommended Posts