Qiita ist unglaublich, nicht wahr?
Vorheriger Artikel (https://qiita.com/kkhouse/items/d8ff2c67cef686a508f8) Also, wenn ich ein Amateur war, aber den Code veröffentlicht habe, Herr konandoiruasa (https://qiita.com/konandoiruasa) Ich habe den Korrekturcode von erhalten.
Ich bin den Amateuren dankbar, die gerade damit begonnen haben.
Deshalb habe ich versucht, das modifizierte hochzuladen!
main.py
import csv
import openpyxl
import sys
import os
import openpyxl as px
aggregate_list =["Toda-gun","Shiogama City","Shiogama City","Oshika-Pistole","Kami-Pistole","Karita-Pistole","Iwanuma City","Nanagahama Stadt","Rifu Stadt","Kurihara Stadt","Kurokawa-Pistole","Shibata-Pistole","Ishimaki Stadt","Miyagino Ward","Wakabayashi Ward","Aoba Ward","Izumi Ward","Taichi Ward","Taga Schloss","Osaki City","Tomai City","Higashi Matsushima Stadt","Tomiya City","Motoyoshi-Pistole","Stadt Natori","Watari-Pistole","Andere"]
# ~~Start der CSV → XLSX-Konvertierung~~~
wb = openpyxl.Workbook()
ws = wb.active
query_word = sys.argv[1]
f = open("./data_csv/{}.csv".format(query_word))
reader = csv.reader(f, delimiter=":")
for row in reader:
ws.append(row)
f.close()
if not os.path.exists("./data_xlsx"):
os.makedirs("./data_xlsx")
wb.save("./data_xlsx/{0}{1}.xlsx".format(query_word,"_Aggregat"))
# ~~csv→xlsx convert end~~~
# ~~xlsx Extraction start~~
folder = "data_xlsx"
filePath = []
for root,dirs,files in os.walk(folder):
for fname in files:
fnamePath = os.path.join(root,fname)
if fnamePath.find(".xlsx")!= -1:
filePath.append(fnamePath)
if filePath ==[]:
print("keine Daten verfügbar!")
xlsx_files_list = [s for s in filePath if query_word in s]
#Holen Sie sich das erstellte xlsx
wb = px.load_workbook(xlsx_files_list[0])
ws = wb[wb.sheetnames[0]]
#Listen Sie alle Adressen in xlsx auf
adress_list = []
table = [0] * len(aggregate_list)
for i in range(ws.max_row):
temp = ws.cell(row=i+1, column=1).value #Weil es oft herauskommt
adress_list.append(temp)
for j, name in enumerate(aggregate_list):
if name in temp:
table[j] += 1 #Zähle zum entsprechenden Ort
break
else:
table[26] += 1 #Andere
#Stellen Sie einen Salztopf und eine Salzschale zusammen
table[1] = table[1]+table[2]
table.pop(2)
for i,j in zip(list(range(1,3)),aggregate_list):
ws.cell(row=i, column=7).value = j
for i,j in zip(list(range(3,27)),aggregate_list[3:]):
ws.cell(row=i, column=7).value = j
for i,g in zip(list(range(1,28)),table):
ws.cell(row=i, column=8).value = g
wb.save("./data_xlsx/{0}{1}.xlsx".format(query_word,"_Aggregat"))
Ich denke, der Code ist anwendbarer als beim letzten Mal.
In diesem Beispiel wird der folgende Code benötigt, um Shiogama und Shiogama in derselben Spalte zu zählen.
main.py
#Stellen Sie einen Salztopf und eine Salzschale zusammen
table[1] = table[1]+table[2]
table.pop(2)
・
・
for i,j in zip(list(range(1,3)),aggregate_list):
ws.cell(row=i, column=7).value = j
for i,j in zip(list(range(3,27)),aggregate_list[3:]):
ws.cell(row=i, column=7).value = j
Wenn die aggregierte Liste keine doppelten Stadt- / Stationsnamen enthält
main.py
for i,j in zip(list(range(1,len(aggregate_list)),aggregate_list):
ws.cell(row=i, column=7).value = j
Sie können auch addieren, indem Sie es auf reparieren. (Vielleicht können Sie, wenn Sie Ihr Bestes geben, den Code so schreiben, dass der Unterschied im Kanji der Stadt und der Gemeinde standardmäßig gezählt werden kann, aber es gibt noch andere Dinge, die ich bisher machen möchte.)
Ich werde die Verwendung von OpenPyXL weglassen, da es herauskommt, wenn Sie es überprüfen. Ich habe den folgenden Code persönlich gelernt.
main.py
folder = "data_xlsx"
filePath = []
for root,dirs,files in os.walk(folder):
for fname in files:
fnamePath = os.path.join(root,fname)
if fnamePath.find(".xlsx")!= -1:
filePath.append(fnamePath)
if filePath ==[]:
print("keine Daten verfügbar!")
xlsx_files_list = [s for s in filePath if query_word in s]
os.walk ()
Wie benutzt man https://www.sejuku.net/blog/63816 Diese Seite ist leicht zu verstehen.
Rufen Sie die XLSX-Datei ab, indem Sie die Ordnerstruktur stapelweise aus dem Verzeichnis abrufen. Wenn das Programm ausgeführt wird und die xlsx-Datei in den im Terminal eingegebenen Argumenten enthalten ist, wird der folgende Code ausgeführt. os.walk ist bequem.
Ich dachte, es wurde geschrieben, aber es ist möglicherweise besser, die Eingabe zu verwenden und den Dateinamen einzugeben, damit die Aggregation abgeschlossen ist. Ich werde es bald tun. .. Dank dessen habe ich viel über die Verwendung von Openpyxl gelernt. Ich bin immer noch ein Amateur, aber lasst uns unser Bestes geben.
Verweise: ・ Https://www.sejuku.net/blog/63816 ・ Aus dem Kommentar von konandoiruasa (https://qiita.com/konandoiruasa)
Recommended Posts