[PYTHON] Mémorandum ((1) csv.reader AttributeError, (2) get_sheet_by_name DeprecationWarning, (3) .delete_cols ne fonctionne pas)

・ Progrès d'aujourd'hui Pour confirmer la fonction de base, tous les traitements illustrés dans la figure ci-dessous peuvent être effectués. Il y a encore de nombreuses petites erreurs. image.png Notez les erreurs que vous faites (1) Le boîtier est étanche.

contribution


import csv
csvfile = open('/content/drive/My Drive/Colab Notebooks/testB.csv',encoding="shift-jis")
reader = csv.Reader(csvfile)
for row in reader:
print(row) 

production


AttributeError                            Traceback (most recent call last)
<ipython-input-14-bb1b8be4844f> in <module>()
      3 csvfile = open('/content/drive/My Drive/Colab Notebooks/testB.csv',encoding="shift-jis") 
----> 4 reader = csv.Reader(csvfile)
      5 for row in reader:
AttributeError: module 'csv' has no attribute 'Reader'

** csv.reader () ** et ** csv.Reader () **, une erreur d'attribut s'est produite car la casse était incorrecte. N'oubliez pas que cela semble se produire fréquemment lors de la réécriture à partir de csv.DictReader

② Il vaut mieux ne pas utiliser get_sheet_by_name

contribution


import openpyxl
wb=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/testB.xlsx')
wb.get_sheet_names()

production


/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:3: DeprecationWarning: 
 Call to deprecated function get_sheet_names (Use wb.sheetnames).
  This is separate from the ipykernel package so we can avoid doing imports until
['Sheet1']

La dépréciation signifie obsolète. Cela fonctionne, mais ce n'est pas très bon, il semble donc être utilisé et les fonctions recommandées sont également écrites. C'est facile à comprendre si vous me demandez, mais quand j'ai vu la chaîne de caractères qui sortait, j'ai perdu du temps à demander "Quoi? Pourquoi?" Il faut vraiment lire l'anglais correctement ...

③ La partie hogehoge de la commande hogehoge.delete_cols est le nom de la variable.

Entrée (avant correction)


import openpyxl
wb=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/testB.xlsx')
ws = wb.worksheets[0]
sheet.delete_cols(2)
wb.save('/content/drive/My Drive/Colab Notebooks/testC.xlsx')

Le fichier a été sorti, mais la deuxième colonne d'Excel n'a pas pu être supprimée. Quand je regarde ça maintenant, je suis complètement fou en mangeant divers sites.

Entrée (après correction)


import openpyxl
wb=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/testB.xlsx')
ws = wb.worksheets[0]
ws.delete_cols(2)
wb.save('/content/drive/My Drive/Colab Notebooks/testC.xlsx')

Utilisez wb = openpyxl.load_workbook () pour regrouper les données xlsx dans la variable wb Avec ws = wb.worksheets [0], remplissez la variable ws avec les données de la feuille de calcul de la page argument (0) à partir des données xlsx dans wb. Utilisez ws.delete.cols (2) pour supprimer la deuxième colonne (argument) des données de la feuille de calcul ws. Enregistré avec wb.save () et réussi ... ça?

Le résultat final de testC.xlsx correspond aux données dans lesquelles la deuxième colonne a disparu. Pourquoi? Puisque les données ws sont copiées à partir de wb, j'estime que c'est vraiment inutile si je ne renvoie pas les données ws à wb avant de faire wb.save. Lorsque ws = wb.worksheets [] est utilisé, les données ws et wb sont-elles synchronisées? Si vous ne savez pas quoi chercher, pourquoi n'écrivez-vous pas une question ...?

~~ Postscript ~~ J'ai joint le lien que j'ai reçu la réponse que la séquence sera référencée. https://qiita.com/wellwell3176/questions/d42efcba6482528e1556

Recommended Posts

Mémorandum ((1) csv.reader AttributeError, (2) get_sheet_by_name DeprecationWarning, (3) .delete_cols ne fonctionne pas)
LocateCenterOnScreen ne fonctionne pas sur PyAutoGui
[VScode] Le format autopep8 ne fonctionne pas [Python]
Virtualenv ne fonctionne pas sur Python 3.5 (Windows)
La commande gqlgen ne fonctionne pas avec gqlgen de go
Après l'installation de php7.2, la commande php ne fonctionne pas
Jinja2 2.9.6 ne fonctionne pas sur la série Lambda Python 3
Lorsque la spécification générique ne fonctionne pas avec pylint