Python(基礎編:CSVの操作)
今日はCSVの操作の仕方について勉強します。
今回も「PyCharm」を使います。
・CSVテキストを作成する
「ファイル」-「新規」-「ファイル」を選択する
新規ファイルを作ると、その拡張子を扱うためのプラグインが検出されるのでインストールします。
すると画像がかわりました。
CSVなので「,」区切りで書き込んでみます。
イメージは「社員番号,名前,入社」です。
読む(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
「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と記入して、同じものを実行するとこうなる。
[' A', 'B', 'C', 'D', 'E']
[' A', 'B', 'C', 'D', 'E']
[' A', 'B', 'C', 'D', 'E']
[' A', 'B', 'C', 'D', 'E']
[' a']
[' b']
[' c']
[' d']
[' e']
[' a', 'a', 'a', 'a']
[' b', 'b', 'b', 'b']
[' c', 'c', 'c', 'c']
[' d', 'd', 'd', 'd']
[' e', 'e', 'e', 'e']
[" 'a'", "'a'", "'a'", "'a'"]
['b', 'b', 'b', 'b']
['1', '2', '3', '4']
・行を取ることができている。
・リスト型で表示されている。
・それぞれ文字列として表示されている。
リスト型: []の中に,区切り
[〇,〇,〇,〇,〇,]
・すべての行を一つのリストにする
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で読み込むとテキスト(文字列)として読み込む。
この状態から始めます。
import csv
with open('test.csv', 'a',encoding="utf-8", newline='') as f:
soz = csv.writer(f)
soz.writerow(['4', 'あ', 'A', 'おーい'])
プロセスは終了コード 0 で完了しました
with openの引数:mode
with openの引数:newline=''
newline=''を抜くと、余分な改行が発生する。👇
書く(上書:w)
import csv
with open('test.csv', 'w', encoding="utf-8", newline='') as f:
soz = csv.writer(f)
soz.writerow(['1', '2', '3', '4'])
上書きなので、全部消えてこれだけになりました。
今日はここまで。
いいなと思ったら応援しよう!
なにとぞ なにとぞー