見出し画像

Python(基礎編:CSVの操作)

今日はCSVの操作の仕方について勉強します。
今回も「PyCharm」を使います。

・CSVテキストを作成する

「ファイル」-「新規」-「ファイル」を選択する

画像1

画像2

新規ファイルを作ると、その拡張子を扱うためのプラグインが検出されるのでインストールします。

画像3

すると画像がかわりました。

画像4

CSVなので「,」区切りで書き込んでみます。
イメージは「社員番号,名前,入社」です。

画像5

読む(r)

CSVを扱うにはまず、CSVモジュールのimportが必要。
import csv
・「.txt」の時にも使った 「with open」を使う。
・「open」で開くと「close」が必要になるが、「with open」だと自動でファイルを閉じてくれる。
with open('test.csv', 'r', encoding="utf-8") as f:
with openの引数:mode

画像19

「test.csv」を開き、fという名前をつける。
soz = csv.reader(f)
csv.reader(csvファイル):
csv.reader()というcsvを読み込む装置に、開いたtest.csvを入れ、更にそれをsozという変数に入れる。
・readで読み込むとテキスト(文字列)として読み込む。
for row in soz:
    print(row)
for ~ in ~ :繰り返し構文
sozという変数のrow(行)分繰り返す。
行ごとに表示する。print(row)
import csv
with open('test.csv', 'r', encoding="utf-8") as f:
    soz = csv.reader(f)
    for row in soz:
        print(row)

実行すると👇こう表示される。

['1001', '織田信長', '2018.4']
['1002', '聖徳太子', '2017.4']
モードの 'r' はデフォルトなので、抜いてもOK
import csv
with open('test.csv', encoding="utf-8") as f:
    soz = csv.reader(f)
    for row in soz:
        print(row)
['1001', '織田信長', '2018.4']
['1002', '聖徳太子', '2017.4']
「row」を「line」に変えても同じ。
import csv
with open('test.csv', encoding="utf-8") as f:
    soz = csv.reader(f)
    for line in soz:
        print(line)
['1001', '織田信長', '2018.4']
['1002', '聖徳太子', '2017.4']
「test.csv」にA,B,C,D,Eと記入して、同じものを実行するとこうなる。

画像7

[' A', 'B', 'C', 'D', 'E']

画像8

[' A', 'B', 'C', 'D', 'E']
[' A', 'B', 'C', 'D', 'E']
[' A', 'B', 'C', 'D', 'E']

画像9

[' a']
[' b']
[' c']
[' d']
[' e']

画像10

[' a', 'a', 'a', 'a']
[' b', 'b', 'b', 'b']
[' c', 'c', 'c', 'c']
[' d', 'd', 'd', 'd']
[' e', 'e', 'e', 'e']

画像11

[" 'a'", "'a'", "'a'", "'a'"]
['b', 'b', 'b', 'b']
['1', '2', '3', '4']

・行を取ることができている。
・リスト型で表示されている。
・それぞれ文字列として表示されている。

リスト型: []の中に,区切り
[〇,〇,〇,〇,〇,]

・すべての行を一つのリストにする

画像16

import csv
with open('test.csv', encoding="utf-8") as f:
    soz = csv.reader(f)
    line = [row for row in soz]
    print(line)
[['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd']]

・行を取得

import csv
with open('test.csv', encoding="utf-8") as f:
    soz = csv.reader(f)
    line = [row for row in soz]
    print(line[1])
['a', 'b', 'c', 'd']

・行の要素を取得

import csv
with open('test.csv', encoding="utf-8") as f:
    soz = csv.reader(f)
    line = [row for row in soz]
    print(line[1][1])
b

書く(追記:a)

文字列の書き込み。

csv.writer(CSVファイル):
csv.writer()というcsvを書き込む装置に、開いたtest.csvを入れ、更にそれをsozという変数に入れる。
・readで読み込むとテキスト(文字列)として読み込む。

この状態から始めます。

画像12

import csv
with open('test.csv', 'a',encoding="utf-8", newline='') as f:
    soz = csv.writer(f)
    soz.writerow(['4', 'あ', 'A', 'おーい'])
プロセスは終了コード 0 で完了しました

画像13

with openの引数:mode

画像20

with openの引数:newline=''
newline=''を抜くと、余分な改行が発生する。👇

画像14

書く(上書:w)

画像20

画像18

import csv
with open('test.csv', 'w', encoding="utf-8", newline='') as f:
   soz = csv.writer(f)
   soz.writerow(['1', '2', '3', '4'])

画像19

上書きなので、全部消えてこれだけになりました。

今日はここまで。



なにとぞ なにとぞー