pythonに疎いせいでipythonを利用中にstrという変数を宣言して変なものを入れてしまった。
そんなことを忘れて、int型をstring型に変換して行おうとstr()を使おうとしたら、
print str(4)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-137-6f54e899169d> in <module>()
----> 1 print str(4)
TypeError: 'csr_matrix' object is not callable
というエラーに。
これは変数strをそのようには呼び出せないよというような意味合いらしい。アホだった…
ここで素直にstrの宣言を消せばいいのだがインタラクティブシェル(ipython)で実行しているためそう簡単にはできない。
ipythonではシェルであるようなclearというようなコマンドを利用することができなかった。
そこで発見したのがマジックコマンドの
%reset
ただこれはすべてのユーザの定義、入力履歴、出力履歴等が消えてしまうらしい。
これは困る。
そこで選択的に消せるコマンドが
%reset_selective hogehoge
ただこれは対象は正規表現で指定されるため上記の場合ではhogeを含む定義すべてを消去してしまう。
そこでhogehoge という文字列を選択して定義をクリアーする場合は完全一致を示す^hogehoge$
と書かなければいけない。
正規表現の意味は以下の通り。
書き方 | 例 | 意味 |
---|---|---|
^ | ^hoge | hogeで始まる |
$ | hoge$ | hogeで終わる |
したがって定義hogehogeのみを消す場合は以下のように記述する。
%reset_selective ^hogehoge$
まとめ
ipythonで宣言の定義を消去するときは正規表現に気をつけて%reset_selective
を使う。