Python プログラミング

Python3でcsv処理あれこれテスト

利用環境


Python 3.7.2
Visual Studio Code 1.39.1

概要

実践的に使いそうないろんなパターンの処理をちょいプロで実装する。
テストデータは、上場企業一覧のCSVを
カブサポさんより配布されているものを入手し、利用する。
https://kabusapo.com/stock-data/stock-list/

処理パターン

1.行をリストとして取り出して順次処理
2.二次元配列(リストのリスト)として取得して、後に何らかの処理
3.辞書として読み込み、後で何らかの処理

ソースコード

import csv
import pprint

#randomモジュールをインポートします。
import random

#CSV-Readerで1行づつ順次読み込んでプリント
with open('stocklist.csv', encoding="utf-8-sig") as f:
    #普通にプリント
    print(f.read())

    reader = csv.reader(f)
    for row in reader:
        #プリントは、特定行だけとする
        if row[0] == '7267':
            print(type(row))
            print(row)

#二次元配列(リストのリスト)として取得
with open('stocklist.csv', encoding="utf-8-sig") as f:
    reader = csv.reader(f)
    l = [row for row in reader]

#リストから要素をランダムに取り出します。
brand_random = random.choice(l)
print(type(brand_random))
print(brand_random)

#辞書として読み込み
with open('stocklist.csv', encoding="utf-8-sig") as f:
    reader = csv.DictReader(f)
    l = [row for row in reader]

#辞書から要素をランダムに取り出します。
brand_random = random.choice(l)
print(type(brand_random))
print(brand_random)

#キーでdictにアクセス
print(brand_random['銘柄コード'])
print(brand_random['銘柄名'])
print(brand_random['市場名'])
print(brand_random['業種分類'])
print(brand_random['単元株数'])
print(brand_random['日経225採用銘柄'])

処理結果

<class 'list'>
['7267', 'ホンダ', '東証1部', '輸送用機器', '100', '1']
<class 'list'>
['4022', 'ラサ工業(株)', '東証1部', '化学', '100', '']
<class 'collections.OrderedDict'>
OrderedDict([('銘柄コード', '9726'), ('銘柄名', 'KNT?CTホールディングス(株)'), ('市場名', '東証1部'), ('業種分類', 'サービス業'), ('単元株数', '100'), ('日経225採用銘柄', '')])

備考

カブサポさんより配布されている上場企業一覧のCSVは
UTF-8であり、テキストの始まりをプログラムに伝える為のデータ内のマークがあります。
これは通称BOMと呼ばれる。
これを、明示的に指定する為に、エンコーディングは"utf-8-sig"
と指定すれば、正常に処理される。

GitHub

GitHub

Programming code abstract technology background of software developer and Computer script

-Python, プログラミング
-,