LoginSignup
2
3

More than 5 years have passed since last update.

新Python生活四日目(振返り)【PyQ/7章】※不明点あり

Posted at

前回の不明点が残ったままですが、、
ここも少し内容量が増えてきて、自分的に若干メモリ不足気味・・・。
はじめの一歩段階なので頑張ります。

with open : ファイルの読込み

with open('ファイル名(パス)', encoding='utf-8') as f: #ファイル名をutf-8(文字コード)で開いてfに代入するよ
    for row in f: #fを1行ずつ出力するよ
    print(row)
出力結果
りんご, 100

ばなな, 200

みかん, 350

rstrip : 行末の改行を削除

with open('ファイル名(パス)', encoding='utf-8') as f:
    for row in f:
    F1 = row.rstrip() #行末にある改行を削除するよ
    print(F1)
出力結果
りんご, 100
ばなな, 200
みかん, 350

split : 文字列の分割

with open('ファイル名(パス)', encoding='utf-8') as f:
    for row in f:
    F1 = row.rstrip().split(',') #1行ずつ出力したfをカンマごとで区切って表示
    print(F1)
出力結果
['りんご', '100']
['ばなな', '200']
['みかん', '350']

集計して表示

区切ったものを個別に代入

inputディレクトリ の L1.csvファイル に以下の様なデータが入っているとする。

好きな飲み物
TARO,コーヒー
JIRO,カフェオレ
SABU,水
--以下略--

このデータを読み込んで集計するよ。

favorite = {} #favoriteって名前の空の辞書を作成

with open('input/L1.csv', encoding='utf-8') as f: #ファイルを開いてfって変数に代入するよ。
    for row in f: #データを代入されてるfを1行ごと表示するよ
        columns = row.rstrip().split(',') #一行ごとに出力したものをカンマで区切って変数columnsに代入
        name = columns[0] #カンマで区切った1つ目をnameって名前で指定する
        drink = columns[1] #区切った2つ目をdrinkって名前で指定する

        if drink in favorite: #辞書の中にドリンクがあれば
            favorite[drink] += 1 #そのドリンクに+1する
        else:
            favorite[drink] = 1 #なければそのままにする

for f_drink, count in favorite.items(): #辞書の中の全てからカウントしたものを変数に代入
    print(f_drink + ':' + str(count))
出力結果
コーヒー:3
カフェオレ:2
水:1
--以下略--

★分からんポイント
①if文:elseの時に1って指定しているのがイマイチピンとこない。。
②最後のfor文:for ~ in ~って構文で覚えていたけど、今回のはカンマが入っている。
 あとinの後の辞書名の後のitems。コレは調べると「全てのキー:keys,値:valuesを~」って書いていたけど、これもイマイチピンとこない。。

2
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3