文字は文字列
文字列(str)はテキストです。シングルクォートまたはダブルクォートで囲みます。意味は同じなので、どちらかに統一しましょう。バックスラッシュはエスケープの始まりで、\n は改行を表します。len() は文字数を数えます。文字列は変更できません(イミュータブル)。その場で書き換えるのではなく、新しい文字列を作ります。
symbol = "AAPL"
note = 'bid and ask'
print(symbol, len(symbol)) # AAPL 4
print(note) # bid and askインデックスとスライス
各文字には0から数えた位置があります。text[0] は先頭、text[-1] は末尾の文字です。スライス text[start:stop] は start から stop の手前までを取り出します。片側を空にすると、その端まで続きます。
# Indexing starts at 0; a slice stops before its end index
ticker = "AAPL.US"
print(ticker[0], ticker[-1]) # A S
print(ticker[:4], ticker[5:]) # AAPL USテキストを整える・分割するメソッド
メソッドは値に結び付いた関数で、ドットを付けて呼び出します。元の文字列は変えず、新しい文字列を返します。strip() は前後の空白と改行を取り除き、upper() と lower() は大文字・小文字を変え、replace(old, new) は文字を置き換え、split(",") は行をカンマごとに区切ってリストにします。データフィードにはこうした行があふれています。
# Clean up a raw line from a data feed
raw = " aapl,184.25,200 \n"
parts = raw.strip().split(",")
print(parts) # ['aapl', '184.25', '200']
print(parts[0].upper()) # AAPL
print(float(parts[1])) # 184.25# join is the opposite of split; in tests for a piece of text
print("-".join(["AAPL", "MSFT"])) # AAPL-MSFT
print("AAPL" in "AAPL,MSFT") # Truef文字列で値を文章に埋め込む
開始のクォートの前に f を付け、{ と } の間に好きな式を書くと、Pythonが評価して結果を文字として埋め込みます。+ で文字をつなぎ、数値を手作業で変換する書き方に代わるものです。波かっこの中には、計算も含めて有効な式なら何でも書けます。
# f-strings put values straight into text
symbol, bid, ask = "AAPL", 184.25, 184.5
print(f"{symbol} {bid} x {ask}") # AAPL 184.25 x 184.5
print(f"{symbol} spread {ask - bid}") # AAPL spread 0.25書式指定
波かっこの中のコロンの後ろに書く書式指定で、値の見た目を決めます。.2f は小数2桁、, は3桁区切り、+ は常に符号を表示、>8 は幅8で右寄せ、.1% は小数をパーセントで表示します。組み合わせも可能で、+,.2f は符号付き・区切り付き・小数2桁の金額になります。
# After the colon, a format spec controls the look
price, pnl, quantity = 184.5, 1234.5, 200
print(f"{price:.2f}") # 184.50
print(f"{pnl:+,.2f}") # +1,234.50
print(f"{quantity:>8d}|") # " 200|"
print(f"{0.0123:.1%}") # 1.2%次は真偽値と比較です。トレードルールの判断はすべて、True と False の値で組み立てられます。
ラボ:採点される内容
quote_lineで気配値を文字にする25点signed_pnlで損益を符号付きで表示する25点normalize_symbolでティッカーシンボルを整える25点parse_fillでフィードの約定行を読み取る25点