Qiita est incroyable, n'est-ce pas?
Article précédent (https://qiita.com/kkhouse/items/d8ff2c67cef686a508f8) Donc, si j'étais un amateur mais que je publiais le code, M. konandoiruasa (https://qiita.com/konandoiruasa) J'ai reçu le code de correction de.
Je suis reconnaissant aux amateurs qui viennent de commencer à le faire.
C'est pourquoi j'ai essayé de télécharger celui modifié!
main.py
import csv
import openpyxl
import sys
import os
import openpyxl as px
aggregate_list =["Toda-gun","Ville de Shiogama","Ville de Shiogama","Oshika-gun","Kami-gun","Karita-gun","Ville d'Iwanuma","Ville de Nanagahama","Ville de Rifu","Ville de Kurihara","Kurokawa-gun","Shibata-pistolet","Ville d'Ishimaki","Quartier Miyagino","Quartier de Wakabayashi","Quartier d'Aoba","Quartier Izumi","Quartier de Taichi","Château de Taga","Ville d'Osaki","Ville de Tomai","Ville de Higashi Matsushima","Tomiya City","Motoyoshi-gun","Ville de Natori","Pistolet à eau","Autre"]
# ~~csv → début de la conversion xlsx~~~
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,"_Agrégat"))
# ~~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("il n'y a pas de données!")
xlsx_files_list = [s for s in filePath if query_word in s]
#Obtenez le xlsx créé
wb = px.load_workbook(xlsx_files_list[0])
ws = wb[wb.sheetnames[0]]
#Lister toutes les adresses en xlsx
adress_list = []
table = [0] * len(aggregate_list)
for i in range(ws.max_row):
temp = ws.cell(row=i+1, column=1).value #Parce qu'il sort plusieurs fois
adress_list.append(temp)
for j, name in enumerate(aggregate_list):
if name in temp:
table[j] += 1 #Comptez jusqu'à la place correspondante
break
else:
table[26] += 1 #Autre
#Assemblez un pot de sel et un bol de sel
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,"_Agrégat"))
Je pense que le code est plus applicable que la dernière fois.
Dans cet exemple, le code ci-dessous est nécessaire pour compter Shiogama et Shiogama dans la même colonne,
main.py
#Assemblez un pot de sel et un bol de sel
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
S'il n'y a pas de noms de ville / quartier en double dans la liste_agrégate
main.py
for i,j in zip(list(range(1,len(aggregate_list)),aggregate_list):
ws.cell(row=i, column=7).value = j
Vous pouvez également ajouter en le fixant à. (Peut-être que si vous faites de votre mieux, vous pouvez écrire le code pour que la différence en kanji de la ville et du quartier puisse être comptée par défaut, mais il y a d'autres choses que je veux faire jusqu'à présent)
J'omettrai comment utiliser OpenPyXL car il sortira si vous le vérifiez. J'ai personnellement appris le code ci-dessous.
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("il n'y a pas de données!")
xlsx_files_list = [s for s in filePath if query_word in s]
os.walk ()
Comment utiliser https://www.sejuku.net/blog/63816 Ce site est facile à comprendre.
Obtenez le fichier xlsx par lot en récupérant la structure de dossiers dans le répertoire. Lorsque le programme est exécuté, si le fichier xlsx est inclus dans les arguments saisis dans le terminal, le code suivant sera exécuté. os.walk est pratique.
Je pensais que c'était écrit, mais il vaut peut-être mieux utiliser l'entrée et entrer le nom du fichier pour que l'agrégation soit terminée. Je le ferai bientôt. .. Grâce à cela, j'ai beaucoup appris sur l'utilisation d'Openpyxl. Je suis toujours amateur, mais faisons de notre mieux.
Les références: ・ Https://www.sejuku.net/blog/63816 ・ D'après le commentaire de konandoiruasa (https://qiita.com/konandoiruasa)
Recommended Posts