Python処理のcsvファイル例を詳しく解説

零下一度
リリース: 2018-05-17 16:24:58
オリジナル
10148 人が閲覧しました

Python は csv ファイルを処理します

CSV (カンマ区切り値) はカンマ区切りの値であり、Excel で開いて表示できます。プレーンテキストなので、どのエディタでも開くことができます。 Excel ファイルとは異なり、CSV ファイルでは:

  • 値には型がなく、すべての値は文字列です

  • フォントの色やその他のスタイルを指定することはできません

  • セルの幅と高さを指定することはできませんセルを結合できません

  • 複数のワークシートは使用できません

  • 画像グラフを埋め込むことはできません

CSV ファイルでは、2 つのセルを区切る区切り文字として を使用します。このように a,,c は、セル a とセル c の間に空白セルがあることを意味します。などなど。 ,作为分隔符,分隔两个单元格。像这样a,,c表示单元格a和单元格c之间有个空白的单元格。依此类推。

不是每个逗号都表示单元格之间的分界。所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。Python内置了csv模块。先看看一个简单的例子。

从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))
ログイン後にコピー

data不能直接打印,list(data)最外层是list,里层的每一行数据都在一个list中,有点像这样

[['name', 'age'], ['Bob', '14'], ['Tom', '23'], ...]
ログイン後にコピー

于是我们可以这样访问到Bob的年龄reader[1][1], 在for循环中遍历如下

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)
ログイン後にコピー

要注意的是,reader只能被遍历一次。由于reader是可迭代对象,可以使用next方法一次获取一行。

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)
ログイン後にコピー

写数据到csv文件中

有reader可以读取,当然也有writer可以写入。一次写入一行,一次写入多行都可以。

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)
ログイン後にコピー

如果不指定newline=''

すべてのカンマがセル間の境界を表すわけではありません。したがって、CSV がプレーン テキスト ファイルであっても、処理には専用モジュールを使用するようにしてください。 Python には csv モジュールが組み込まれています。まずは簡単な例を見てみましょう。

CSV ファイルからデータを読み取る

name,age
Bob,14
Tom,23
Jerry,18
name,age
Bob,14
Tom,23
Jerry,18
ログイン後にコピー

data は、list(data) の最外層は list であり、内層の各行のデータはリスト内にあります。このように

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)
ログイン後にコピー

したがって、この reader[1][1] のようにボブの年齢にアクセスでき、for ループ内で次のようにトラバースされます

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)
ログイン後にコピー

リーダーは 1 回しかトラバースできないことに注意してください。 Reader は反復可能なオブジェクトであるため、next メソッドを使用して一度に 1 行を取得できます。 rrreee🎜CSVファイルにデータを書き込みます🎜🎜それを読めるリーダーがいて、もちろん書き込むことができるライターもいます。一度に 1 行を書くことも、一度に複数行を書くこともできます。 🎜rrreee🎜 newline='' が指定されていない場合は、1 行書くごとに空行が書き込まれます。上記のコードは以下を生成します。 🎜rrreee🎜DictReader および DictWriter オブジェクト🎜🎜 DictReader を使用して、テーブルの最初の行 (通常はヘッダー) をキーとして使用して、辞書のようにデータを操作します。キーを使用して、行内のそのキーに対応するデータにアクセスします。 🎜rrreee🎜 DictWriter クラスを使用すると、データを辞書形式で書くことができ、キーはヘッダー (テーブルの最初の行) にもなります。 🎜りー🎜🎜🎜

以上がPython処理のcsvファイル例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!