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
Angenommen, Sie haben einen Dateinamen wie den Inhalt von test.csv oben. Die in dieser CSV beschriebene BMP-Datei enthält die folgenden Namensregeln (es handelt sich um eine ordnungsgemäß erstellte Namensregel):
FFF_TTTT_C.bmp
--F: Rahmennummer --T: Eine Art Index
Der Inhalt der obigen CSV-Datei ist nach Frame-Nummer sortiert. Aus irgendeinem Grund
** "Ich möchte nach einem Index von T sortieren!" **
Ich gehe davon aus, zu sortieren, wenn ein solcher Fall herauskommt.
Ich habe ein Programm mit der Idee erstellt. Wenn Sie sorgfältig suchen, wird die Funktion Ippatsu Dawn! Ich habe das Gefühl, ich kann es schaffen mit ...
##
# coding:utf-8
##
import csv
import pprint as pp
##
#Sortieren nach Namenskonvention
# inputlist:Liste zum Sortieren
# key_number:Geben Sie die Anzahl der zu sortierenden Zeichenfolgen an
# key_Gibt eine leere Liste zurück, wenn die Anzahl die Anzahl der Unterteilungen in der Namenskonvention überschreitet
##
def Sort_by_Key(input_list,key_number,split='_'):
#Teilen Sie den Dateinamen und konvertieren Sie ihn in das Tapple-Format
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 []
#Sortieren
file_sort.sort(key=lambda t: t[key_number])
#Kleben Sie die Spalten zusammen
output_file = []
for f in file_sort:
s = split.join(f)
output_file.append(s)
return output_file
def main():
#Datei lesen
op = open('test.csv','r')
tpp = csv.reader(op)
#Extrahieren Sie nur die erste Zeile von csv
test_file = []
for t in tpp:
test_file.append(t[0])
op.close()
#Ursprüngliche Bestellung
print("before")
pp.pprint(test_file)
file_save = Sort_by_Key(test_file,1)
print("\nafter")
pp.pprint(file_save)
#Konvertierung zur Speicherung
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] Lesen und Schreiben von CSV mit Python [2] Einführung in Python-Listen, Taples, Wörterbücher [3] Python: Informationen zum Sortieren von Objekten [4] Zeichenfolgen mit Python verketten / teilen: join (), split () [5] convert a flat list to list of list in python [6] Bibliothek: pprint
Recommended Posts