【JupyterNotebook】リストを手入力で手っ取り早く作る
文字列のリストを手っ取り早く用意したいとき、手入力でシングルかダブルのクォーテーション「'」
、「"」
をいちいち付けなければならないのは激しく面倒ですよねぇ。どうにかならんかな?
良いこと思いついた!!
- セルに単語を行ごとに書いて、
- マジックコマンドでファイル保存して、
- そのファイルをマジックコマンドで読み取り変数に代入すると、
リストになる!!
試してみる。
実行環境
- Android
- termux
- Python3.8
- JupyterNotebook
現在の作業ディレクトリの中身を一応確認しておこう。
%ls
このファイル.ipynb
「このファイル.ipynb」だけがある。
では、文字列を羅列しファイルに書き込みを行う。
%%writefile data.txt 納豆 しめじ 玉子焼き
Writing data.txt
作業ディレクトリに「data.txt」というファイル名で保存した。%ls
で確認できる。
%ls
data.txt このファイル.ipynb
data.txt
という指定した名前のファイルができている。
次に、書き込んだファイルをマジックコマンドで読んで、適当な変数に代入する。
lst = !cat data.txt print(lst) # 中身 print(type(lst)) # 型 print(len(lst)) # 要素数
['納豆', 'しめじ', '玉子焼き']
<class 'IPython.utils.text.SList'>
3
↑のセルのマジックコマンドはシステムコマンドの!cat
にしている。
IPythonカーネルのコマンド%cat
では何故か上手く行かない。
リストが大量になればなるほどクォートを入力しなくても良い恩恵が受けられる。
保存ファイルもどうせ使い捨てなのでいい加減に短縮して、もはやファイル名は拡張子も付けずに、代入する変数名も1文字にして、
%%writefile a じゃがいも さつまいも やまいも 里芋 人参 しいたけ ゴボウ れんこん さば いか
Writing a
l = !cat a l
['じゃがいも', 'さつまいも', 'やまいも', '里芋', '人参', 'しいたけ', 'ゴボウ', 'れんこん', 'さば', 'いか']
最後に不要なファイルは削除。
!rm data.txt a
一応、削除されたか確認。
%ls
このファイル.ipynb
尚、Windows上でのJupyterNotebookで同じことを行うなら、システムコマンドはコマンドプロンプトかパワーシェルのどちらを使えると思う。
Linux/Mac等 | 意味 | コマンドプロンプト | パワーシェル |
---|---|---|---|
ls | ディレクトリの中身を見る | dir | ls |
cat | ファイルの中身を見る | type | cat |
rm | ファイルの削除 | del | Remove-Item |
ファイルを削除する時は戻せないので気をつける。
何かの役に立つかな?
セルを番号とかで指定して出力を取り出したり出来ないのだろうか…
追記
変数.split()
を使っても出来る。こっちが早いかなw
s = '福岡 佐賀 長崎 大分 熊本 宮崎 鹿児島 沖縄' # スペースで区切ってリスト化 lst_2 = s.split() print(lst_2)
['福岡','佐賀','長崎','大分','熊本','宮崎','鹿児島','沖縄']
以上です。