自分の使い方メモです。
オブジェクト変数varを消す。初期化したいときなどに使う。
del var
オブジェクトの属性を全て見る。コマンドを調べるときに使う。
dir(object)
リストで文字列から1文字ずつを要素にしたリストが作れる。
>>> list('hogehoge')
['h', 'o', 'g', 'e', 'h', 'o', 'g', 'e]
osモジュールでディレクトリ操作
import os
# ディレクトリ作成
os.mkdir(path)
# カレントディレクトリを返す
os.path.abspath('.')
#ディレクトリ内のファイル名を取得(※ディレクトリ名も拡張子なしで取得される)
os.lisrdir()
import は1度読むと再読み込みしてくれない。reloadする
import importlib
importlib.reload(moduleA)
数字のゼロ埋め
month = 1 # 01にしたい
print('{:02}'.format(int(month)))
でできるがJavaScript的?な書き方で
month = 1
print(('0'*2 + str(month))[-2:])
でもOK。この書き方の便利なところはゼロ埋め桁数を操作しやすいこと
n = 2 # ゼロ埋め桁数
month = 1
print(('0'*n + str(month))[-n:])
formatを使うときはこのように書けばnで変えられる。
month = 1
n = 3
print(('{:0'+str(n)+'}').format(2))
Out: '003'
数字のゼロ埋め その2
2018年1月1日→ '20180101'を作りたいとき
import datetime
now = datetime.datetime.now()
print('{:04}{:02}{:02}'.format(now.year, now.month, now.day) )
スペースで埋める
'{:5}'.format(22)
Out: ' 22'
二種類の文字をformatでゼロ埋め
4桁と5桁でゼロ埋めする例。0, 1は普段のformatのときと同じで、省略可能。
'{0:04}{1:05}'.format(22, 111)
Out: '002200111'
文字列のzfill属性を使う
"22".zfill(6)
とやると、文字列にたいして6桁でゼロ埋めするという意味。
Out: '000022'
数字ではなく文字に対してもできます。
"aa".zfill(6)
Out: '0000aa'
関数のreturn を複数にするとき
def hoge():
# hoge
return a, b
とかくとタプルになって
a, b = hoge()
で受け取ることができる。
return [a, b]
と書いてもよい。
ファイルの最終更新日
import os
import time
# os.path.getmtime()
# time.ctime() UNIX時間から変換する
file = "some_path"
print("last modified: {}".format(time.ctime(os.path.getmtime(file))))
pandas dataframeでインデックスを更新する
df.index = range(len(df))
proxy 環境で git cloneができないとき 、以下を参照のこと
http://sushichop.blogspot.jp/2013/09/git.html
IPython(jupyter)でhtml表示をする
from IPython.core.display import HTML
from IPython.core.display import display
display(HTML('<b>test bold</b>'))
display(HTML('<i>test italic</i>'))
クラス名を調べる
属するクラスの名前を調べます。
x.__class__.__name__
x.__name__
だけで出せるときもあるみたいですが。
not all arguments converted during string formattingエラー
プレースホルダの数(%s)と、.format()で与える値の数が違っていると出ます
文字列のなかにある文字が何回現れるかを調べる
リスト内包表記でカウントしてみます。
text = '(%s, %s, %s)'
len([t for t in text if t == 's']) # 3
Pythonの変数のあとにアンダースコア(_)を入れるのは、予約語との衝突をさけるための慣例(?)
list_
exec_
などの使い方をします。list, execという予約語との衝突をさけて変数を作るためです。
Python launcher
コマンドラインでpyとだけ記述してPythonを起動しているときがあります。
py
と入力すると、インストールされている中で最新のバージョンが起動します。
py -2.7
とすると、2.7
py -2
とすると、python2系の中で最新のものが対象になります
Pythonの予約語を変数名に使ってはいけない
予約語というのは、Pythonで使うことが決められている単語、list, printなどのことです。これに変数を代入すると(できますが)、あとで大変なことに・・・。
>>> print = 1
>>> print('test')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
ということで、printという予約語に 1 を代入してしまったので、printとしての機能はなくなってしまいました。
一行で2つ以上の変数に代入するときの違い
# 1行で2つ代入
# 初期値
a=1
b=2
a, b = b, a # a にb(=2)、b にa(=1)が入る
print(a,b)
-> (2, 1)
aとbは同時に入れ替わっています。
=が終わるまでは上書きされません。
# 別々に代入するとき
# 初期値
a=1
b=2
a = b # a にb(=2)が入る
b = a # b にa(=2)が入る
print(a, b)
-> (2, 2)