よちよちpython

独習 python/Qpython/Pydroid3/termux

【JupyterNotebook】リストを手入力で手っ取り早く作る

文字列のリストを手っ取り早く用意したいとき、手入力でシングルかダブルのクォーテーション「'」「"」をいちいち付けなければならないのは激しく面倒ですよねぇ。どうにかならんかな?



良いこと思いついた!!



  1. セルに単語を行ごとに書いて、

  2. マジックコマンドでファイル保存して、

  3. そのファイルをマジックコマンドで読み取り変数に代入すると、


リストになる!!



試してみる。

実行環境

  • 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)

['福岡','佐賀','長崎','大分','熊本','宮崎','鹿児島','沖縄']



以上です。