利用環境
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"
と指定すれば、正常に処理される。