Explication détaillée des exemples de fichiers CSV de traitement Python

零下一度
Libérer: 2018-05-17 16:24:58
original
10149 Les gens l'ont consulté

Python traite les fichiers csv

CSV (Comma-Separated Values) sont des valeurs séparées par des virgules, qui peuvent être ouvertes et visualisées avec Excel. Puisqu’il s’agit de texte brut, il peut être ouvert par n’importe quel éditeur. Contrairement aux fichiers Excel, dans les fichiers CSV :

  • les valeurs n'ont pas de type, toutes les valeurs sont des chaînes

  • ne peut pas spécifier de styles tels que couleur de la police

  • La largeur et la hauteur des cellules ne peuvent pas être spécifiées et les cellules ne peuvent pas être fusionnées

  • Il n'y a pas plusieurs feuilles de calcul

  • Impossible d'intégrer des graphiques d'images

Dans les fichiers CSV, utilisez , comme séparateur pour séparer deux cellules. Comme ça a,,c signifie qu'il y a une cellule vide entre la cellule a et la cellule c. Et ainsi de suite.

Toutes les virgules ne représentent pas une démarcation entre les cellules. Ainsi, même si le CSV est un fichier texte brut, insistez pour utiliser un module dédié pour le traitement. Python dispose d'un module csv intégré. Regardons d’abord un exemple simple.

Lire les données d'un fichier CSV

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.reader(f)print(list(reader))
Copier après la connexion

data ne peut pas être imprimé directement. La couche la plus externe de la liste (données) est une liste, et chaque ligne de données de la couche interne est dedans. une liste. , un peu comme ça

[['name', 'age'], ['Bob', '14'], ['Tom', '23'], ...]
Copier après la connexion

On peut donc accéder à l'âge de Bob comme çareader[1][1], parcouru dans la boucle for comme suit

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.reader(f)for row in reader:# 行号从1开始print(reader.line_num, row)
Copier après la connexion

Il est à noter que le lecteur ne peut être Traverse qu'une seule fois. Puisque reader est un objet itérable, vous pouvez utiliser la méthode next pour obtenir une ligne à la fois.

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.reader(f)# 读取一行,下面的reader中已经没有该行了head_row = next(reader)for row in reader:# 行号从2开始print(reader.line_num, row)
Copier après la connexion

Écrivez les données dans le fichier csv

Il y a des lecteurs qui savent lire, et bien sûr, il y a des écrivains qui peuvent écrire. Vous pouvez écrire une ligne à la fois ou plusieurs lignes à la fois.

import csv# 使用数字和字符串的数字都可以datas = [['name', 'age'],
         ['Bob', 14],
         ['Tom', 23],
        ['Jerry', '18']]with open('example.csv', 'w', newline='') as f:
    writer = csv.writer(f)for row in datas:
        writer.writerow(row)        # 还可以写入多行writer.writerows(datas)
Copier après la connexion

Si newline='' n'est pas précisé, une ligne vierge sera écrite pour chaque ligne écrite. Le code ci-dessus génère ce qui suit.

name,age
Bob,14
Tom,23
Jerry,18
name,age
Bob,14
Tom,23
Jerry,18
Copier après la connexion

Objets DictReader et DictWriter

En utilisant DictReader, vous pouvez exploiter les données comme un dictionnaire, en utilisant la première ligne du tableau (généralement l'en-tête) comme clé. Utilisez key pour accéder aux données correspondant à cette clé dans la ligne.

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.DictReader(f)for row in reader:# Max TemperatureF是表第一行的某个数据,作为keymax_temp = row['Max TemperatureF']print(max_temp)
Copier après la connexion

En utilisant la classe DictWriter, vous pouvez écrire des données sous forme de dictionnaire, et la clé est également l'en-tête (la première ligne du tableau).

import csv

headers = ['name', 'age']

datas = [{'name':'Bob', 'age':23},
        {'name':'Jerry', 'age':44},
        {'name':'Tom', 'age':15}
        ]with open('example.csv', 'w', newline='') as f:# 标头在这里传入,作为第一行数据writer = csv.DictWriter(f, headers)
    writer.writeheader()for row in datas:
        writer.writerow(row)        # 还可以写入多行writer.writerows(datas)
Copier après la connexion


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!