ウェブインコ

インコの技術メモ

Python3

正規表現の $1
\1
re.sub で書くときは \\1 です。
例)

res = re.sub(r'(\d+) (.*)', "\\1 と \\2", "1234 abcd")


コンフィグファイルに任意の変数名があるかないか

vi config.py
HOGETEISUU = ["unko"]
import config
if hasattr(config, 'HOGETEISUU') :
 print(config.HOGETEISUU)
Python には定数がないので、別ファイルで変数を設定して定数っぽく使ったりするのですが(是非はおいといて)
なにげに「要らないからコメントアウト」されがちなので、こんな感じの if 文で対処。


Python の特徴。インデントとか
・Python はインデントで文章のかたまりを表します。
 ・{ } は有りません。

if hoge == 1 : # 条件文等の終わりは :
    print(hoge)
elif hoge == 2 : # else if は elif です。
    print(hoge)
else : # コメントは # から文末まで。まとめてくくるのは有りません。
    print(hoge)
hoge = 92  # if と同じ階層
print()

・文末に ; は不要です。改行が文の終わりになります。
・変数に $ はいりません。
・ダブルクォーテーション、シングルクォーテーションの区別はありません。
・前に r を付けると確実にそのまま表示します。
    例)
    print('123\n456') # エスケープ文字を置換
    123
    456
    print(r'123\n456') # そのまま表示
    123\n456


配列の結合
2つの配列をつなぐ
dat = [1,2,3]
dat2 = [4,5]

dat.extend(dat2)
print(dat)
[1,2,3,4,5]

配列に要素を追加
dat = [1,2,3]
dat.append(4)
dat.append(5)
print(dat)
[1,2,3,4,5]

いずれも返り血はないです。強いて言うなら None になります。

配列←→CSV
配列 → CSV
arr = ['poodle1', 'poodl2', 'poodl3']

csv = ','.join(arr)
CSV → 配列
csv = 'poodle1,poodl2,poodl3'
arr = csv.split(',')


最後の一文字がいらない
line = 'aaa,bbb,ccc,ddd,'

print(line[:-1])
aaa,bbb,ccc,ddd


前から〇〇文字
前から4文字: 文字.[0:4]
hoge = '20180223'

yyyy = hoge.[0:4]


頭ゼロ埋め
2桁ゼロ埋め: 文字.zfill(2)
hoge = 2

mm = hoge.zfill(2)