きゃっとぐるーぶ

忘れてもいいようにメモを取っても、メモを取ったことを忘れる男の備忘録

Python

可変長引数 ふたつのreturnから返ってくる

def foo(*args, **kwargs): return args for k, v in kwargs.items(): return k, v ret = foo(3, {'Hello': 'World'}) # # (3, {'Hello': 'World'}) 私のreturnの理解は、ひとつめのreturnで関数を抜けるでした。 def bar(arg) value = 100 if arg > value: …

PythonでYahooの画像検索から画像をスクレイピング

プログラミングに興味を持ち、「作りたいもの」を考え続けてもう7年もの月日が経ちました。 まるで「自分探しの旅」をする意識高い系の若者のようにそこらへんを彷徨い続けています。 ここ数日、プログラミング熱が再発したのでコードを書き始めたらまたス…

pathlibでfile.pyのフルパスを取得する

実行してるpythonファイルまでのパスやカレントディレクトリを取得したいときがある。osとpathlibあるけどどっちが便利なのよと思ったので並べてみた。好みはpathlib。オブジェクトを返してやれば、パスの切り貼りが楽なのよね。osかpathlibどちらがいいかと…

PythonのdictでkeyがなくてもKeyError例外をださない方法

KeyErrorの例外をキャッチするために例外を書いてたが、dic.get()を使えばそんな必要もない。公式ドキュメントを読むのが大事といいますが、ほんとですね。 dic = {"id":"1000", "name":"okaz", "group":['sys', 'wheel', 'optical']} print(dic["id"]) prin…

Python requests_htmlを使って画像をスクレイピングする

画像のまとめサイトのようなところから画像を拾ってくるプログラムをプログラミング学習目的でつくりました。そのため私以外の環境では動くのかは不明です。 main()部分がすっきり書けて可読性もいいかなと過去の自分のプログラムと比較するとそう思います。…

クリップボードにある将棋倶楽部24の棋譜をファイルにする

将棋倶楽部24の自由対局室で対局すると棋譜が残らない。棋譜はコピーすれば保存できるが対局日、対局者名、そして勝敗を棋譜ファイル名に反映するのは手間だ。そこでそれらを勝手にやってくれるプログラムを書いた。 クリップボードは clipit を使用してい…

Pythonでタイピング練習プログラム

あいかわらずPythonでスクレイピングばかりしているわけですが、テーブルタグのスクレイピングが苦手なので、練習がてらに英単語をスクレイプした際に出来たデータをつかい英単語練習用プログラムを作ってみました。単語のスペルをタイプし、その単語の意味…

日本将棋連盟の詰将棋URLをランダムで表示する

日本将棋連盟にはプロ棋士が考案した詰将棋が数多くあり、新作もほぼまいにち公開されています。それをTwitterなどに流して解いてもらうようです。それを見ていて私としては、ランダムに出題するページがあったらいいのになあと思ったので作りました。ランダ…

dictの入れ子になったlistからある要素を探すには

重複した要素を探して、そのkeyとindexを知りたかった。 データ data = {'y': [['a', '234'], ['b', '567']], 'x': [['c', '890'], ['d', '333']]} 作った関数 def foo(arg): for key in data.keys(): for idx, valule in enumerate(data[key]): if arg in v…

将棋プロ棋士のプロフィールを拾ってくるクラス

日本将棋連盟のサイトから棋士のプロフィールを拾ってくる。 作ってみたは良いけど、使いみちは特にないw kp = KishiPicker('https://www.shogi.or.jp/player/pro/175.html') ret = kp.parson_name() print(ret) # ('羽生善治', 'Yoshiharu Habu') ret = kp.…

将棋倶楽部24のユーザー情報を集めたい

将棋倶楽部24のユーザー情報をスクレイプして、JSON化する。 サークルメンバーのレートや勝敗の変動を観察する目的。 名簿で検索し、それをコピペ、csvにして保存。 保存したcsvをプログラムでJSON化する。 csvにする過程もPythonで行いたいがrequest_html…

Pythonで重複ファイルを削除したい

プログラミングはたくさんコードを書いていくのが一番の学習なんだそうだ。 ちなみに、私のプログラミングのスキルは初学者に毛が生えた程度。(ハゲの話はしてない) 正直、プログラミングをする動機は私にない。作りたいものがない。 だから、シェルスクリ…

将棋クラブ24の棋譜がshift_jisなのでまとめてutf-8に変換したい

将棋クラブ24では棋譜の一括ダウンロードをユーザーページから行える。ダウンロードするとzipファイルが落ちてくる。それはいいのだが、棋譜の文字コードがshift_jisなのでwindowsユーザーではない私の環境には適さない。そのため、一括で変換してしまうこ…

tempfile 一時ファイルやディレクトリの作成

テキストファイルの文字コードを変えたいときとかに、一旦どこかへ退避させる必要があるんだけど、自分でやらんでもよかったのね。zip展開に一時ディレクトリを活用しよ。 一時ファイルの作成 import tempfile f = tempfile.NamedTemporaryFile('w+') f.name…

ファイルの文字コード変更 utf-8 => shift_jis

import codecs def to_shiftjis(org_file, dst_file): of = codecs.open(org_file, 'r', 'utf-8') df = codecs.open(dst_file, 'w', 'shift_jis') for line in of: df.write(line) of.close() df.close() 退屈なことはPythonにやらせよう ―ノンプログラマー…

split()と rsplit()を使う splitlines()で改行区切り

split()で狙い通りに区切り位置が指定できないときは word = "John F. Kennedy International Airport" word.split() # > ['John', 'F.', 'Kennedy', 'International', 'Airport'] # と返ってくる word.split(None, 2) # > ['John', 'F.', 'Kennedy Internat…

request-htmlでリンクを拾い集めるのが簡単だったので簡易画像ダウンローダーをつくった

追記: 画像の保存先を記事ごとに振り分けるように作ったもの。 Pythonで画像ダウンローダーを作ってみた - きゃっとぐるーぶ ページ内のリンクを収集するのが本当に楽。 from requests_html import HTMLSession session = HTMLSession() r = session.get(pa…

requests + BeautifulSoupでスクレイピングで文字化けしたときの対処法

from bs4 import BeautifulSoup import requests r = requests.get(page_url) # 追加する r.encoding = r.apparent_encoding soup = BeautifulSoup(r.text, 'lxml') 文字化けは解決するが若干時間がかかるようになる。 Pythonクローリング&スクレイピング -…

Pythonからpyperclipを使ってクリップボードを読み書きする方法

pyperclipのインストール $ pip install pyperclip import pyperclip # クリップボードから読み込み clipboard = pyperclip.paste() # クリップボードに書き込み pyperclip.copy(data) import pyperclip clipboard = pyperclip.paste().split('\n') data = […

jupyter notebookにkernelを追加する方法

任意の名前でvenvを作成 $ python -m venv <kernelname> アクティベートする $ source <kernelname>/bin/activate ipykernelをインストール $ pip install ipykernel jupyterで使えるようにする $ ipython kernel install --user --name=<kernelname> ipythonとなってるが問題はない。 これで新規</kernelname></kernelname></kernelname>…