Pythonに関するメモ
完全に個人的なメモ
hydrogenを使ってplotlyが実行できない。
何をやってもエラーが解決されず、絶望したが再起動したら直った。色々やったので直接的な解決策がこれで正しいいのか分からないが、おそらく以下の通りであろう。 ipythonをインストール エラー時に表示されるコマンドを実行して再起動すると直った。
ファイルを開く際にUnicodeDecodeErrorに襲われる。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position
こンな感じのエラーだ。Pythonのエンコードはデフォルトでutf-8
なのでそれ以外のファイルを開くと言いそうな。
簡単な解決方法として読み込むファイルの文字コードをutf-8
に変換するそれだけで良い。
openメソッドの引数は以下のようになっている。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
引数のmodeは以下のような設定が可能.
文字 | 意味 |
---|---|
'r' | 読み込み用に開く (デフォルト) |
'w' | 書き込み用に開き、まずファイルを切り詰める |
'a' | 書き込み用に開き、ファイルが存在する場合は末尾に追記する |
'x' | 排他的な生成に開き、ファイルが存在する場合は失敗する |
'b' | バイナリモード |
't' | テキストモード (デフォルト) |
'+' | ディスクファイルを更新用に開く (読み込み/書き込み) |
'U' | ユニバーサル改行 モード (非推奨) |
関数の可変長引数
引数の先頭に*
をつけることで可変長引数とすることができる。
# 引数2つ、戻り値なしの関数の定義 def function(*arg): print(sum(arg)) # 引数2つを入れて、関数の呼び出し function(2, 4)
この時、arg
はタプル型であることに注意しなければならない。
正規表現に関して
import re
で使う。 使える関数は以下の通り
文字列の先頭がパターンにマッチするかを調べる
match()
先頭に限らずパターンにマッチするかを調べる
search()
マッチする部分すべてをリストで返す
findall()
マッチする部分すべてをイテレータで返す
finditer()
マッチした部分を置換する
sub()、subn()
パターンで文字列を分割する
split()
検索を行う前に正規表現のパターンをコンパイルするか、関数の引数にそのままパターンを渡す方法がある。 パターンをコンパイルするというのは、compile()関数を使ってコンパイルしたパターンをメソッド?クラス?として使うようだ。
import re regex = r'ab+' text = "abbabbabaaabb" pattern = re.compile(regex) matchObj = pattern.match(text)
この時、パターンの前にあるr
は文字列のバックスラッシュをそのままバックスラッシュとして扱えるようにするための物
またパターンにそのまま引数として与える場合は以下のようにかく。
import re regex = r'ab+' text = "abbabbabaaabb" matchObj = re.match(regex, text)
Hydrogenに関するメモ
実行結果の表示を別ウィンドで
command+shift+pでHydrogen : Toggle Output Area
とするといい。
実行結果の削除
実行を繰り返しながらコードを書いていると実行結果が鬱陶しくなる時がある。
そんな時はCtrl+Shift+BackSpace
クラスに関して
if name == ‘main’:について
pythonのファイルは直接実行されるとnameという変数が自動で作られ、さらに実行しているスクリプトのモジュール名が自動的に代入される。
Pythonスクリプトを直接実行した時には、そのスクリプトファイルは「main」という名前のモジュールとして認識される。
「if name == ‘main’:」の意味は、「直接実行された場合のみ実行し、それ以外の場合は実行しない」という意味
ちなみに、atomでifmain
とタイプすると自動補完で出せる。