TIL

Today I Learned. 知ったこと、学んだことを書いていく

Python

PipenvでImportError: cannot import name 'get_installed_distributions'ってエラー出た

pipenvのgraphしたらエラーが出たから、その時の対処のメモと言うか、いらないと思うけど、メモっとく $ pipenv graph Traceback (most recent call last): File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pipdeptree.py", line 17, in <module> from </module>…

gzipモジュールを使った圧縮と展開 - Python

vcrpyでは、レスポンスの量が多い場合、圧縮されて(バイナリになって)カセットに格納される。どうやって圧縮されたデータを扱うのか調べてみたら標準モジュールのgzipモジュールでできそうだったため、メモしておく 圧縮にはgzip.compress()メソッド。展開に…

mypyとjedi-vimで補完を強くする - Vim

Pythonで型アノテーションを使いたくなって、どうせならVimでも補完できるようにしたいと思って、やってみた Python3が有効になっているか確認 まずはVimでPython3が有効になっているか確認する もし有効になっていない場合、ここを参考にして、有効にする $…

GETリクエストのパラメータの空白はそのままでいい requests - Python

requests.get()でGETリクエストを送信するときのパラメータに空白が入るときはどうすればいいのかわからなかったが、そのまま渡していいことがわかった import requests params = {'aaa': '111 あああ', 'bbb': '222 いいい'} res = requests.get('http://go…

requests.apiモジュール - Python

https://github.com/requests/requests/blob/00fd4c8eb4ac0fd7b8f8d76bbf15ab06351c052c/requests/api.py#L16-L58 から重要なところを引っ張ってきた def request(method, url, **kwargs): with sessions.Session() as session: return session.request(meth…

実行しているPythonのバージョンを取得 - Python

いくつかの方法があるらしい sys.hexversionを使う platform.python_version_tuple()を使う 1.sys.hexversionを使う これはPyGithubのソースを見てたときに見つけて一人で感動した書き方 sys.hexversionを使うことでPythonのバージョンの16進数を取得できる…

pydubを使って音楽を鳴らす - Python

Pythonで音楽(mp3)を鳴らすにはpydubというライブラリを使えば実現できる。 github.com 音楽鳴らすまでに行ったことはここに書いてある 音を鳴らす · Issue #2 · tamago324/CasNewCommentNoticePy 環境 $ sw_vers ProductName: Mac OS X ProductVersion: 10.…

正規表現使った置換 - Python

Python正規表現を使った置換 reモジュールのsub()メソッドを使った >>> import re >>> re.sub(r'aa', 'bb', 'aabbccdd') 'bbbbccdd' 検索する文字列はr'対象'という感じで書かないといけないことに注意する 参考文献 Pythonで文字列を置換する:replace(), r…

辞書からJSON形式へ変換 - Python

辞書型からJSON形式のデータに変換するときにはjson.dumps()を使う また、JSON形式のテキストデータになる!(JSONはテキストの形式だから当たり前か...) >>> import json >>> testDict = { ... 'one': 1, ... 'two': 2, ... } >>> json.dumps(testDict) '{"o…

jedi-vimインストール - Vimプラグイン

Pythonの補完を行えるjedi-vimを入れてみた。 VimのPython3が有効になっていない場合はここを参考に有効にする まずは、jediをインストールする。 $ pip3 install --user jedi インストールされていることを確認 $ pip3 list | grep jedi jedi 0.11.1 次に、…

レスポンスのHTTPステータスコードの確認 - requests

レスポンスのHTTPステータスコードの確認を行うにはstatus_codeプロパティを使う。 >>> import requests >>> res = requests.get('https://www.google.co.jp') >>> res.status_code 200 また、結果の確認で使えるようなコードもある requests.codes.okなど …

辞書の結合 - Python

辞書の結合にはupdate()を使う。結合された結果は戻り値ではなく、その辞書に結合されることに注意!!!(これではまってた...) >>> dict1 = {'name': 'tamago'} >>> dict1 {'name': 'tamago'} >>> dict2 = {'age': 100} >>> dict1.update(dict2) >>> dict…

CSSを外部ファイルに記述 - bottle

CSSみたいな静的ファイルをbottleで扱うときには、ルーティングを設定してあげる static_fileをインポートして、処理を記述する 以下のようなファイル構成だった場合 . ├── bottle.py ├── server.py ├── static │ └── css │ └── main.css └── views └── top.…

Cookieを使う - bottle

bottleでCookieを使う Cookieの保存:response.set_cookie Cookieの取得:request.get_cookie 署名をする(secretを設定する)ことで少しはセキュアになる Cookieの保存 response.set_cookie('userId', 'tamago', max_age=15552000) max_ageを設定しないと、ブ…

redirectする - bottle

bottleでリダイレクトをする方法 /abcにアクセスしたら、/defにリダイレクトしたい from bottle import route, run from bottle import redirect @route('/abc') def test1(): redirect('/def') @route('/def') def test2(): return 'defのページ' run(host=…

レスポンスからdictを取得- Python

忘れるので書いておく requestsのレスポンスからjson形式のdictを取得 import requests res = requests.get('exsample.com') res.json() res.json()はdictで取得できる

__init__.pyについて

Pythonでの__init__.pyについて調べてみた __init__.pyの役割 __init__.pyがあるディレクトリをパッケージとして扱えるようになる(Python3からは__init__.pyが無くてもパッケージとして認識されるようになった) 初期化処理を記述できる パッケージとして扱え…

GETパラメータを取得する - Bottle

BottleでGETパラメータを取得する方法 Bottleのチュートリアルに書いてあった import requestと、request.query.パラメータ名でできた from bottle import request, route, run @route('/') def main(): print(request.query.name) run(host='localhost', po…

Pythonのメモ一覧

Pythonのメモが多くなってきたため、整理 基礎 標準モジュール 文字列 組み込み関数 ファイル サードパーティーモジュール requests Webフレームワーク Bottle Djngo 小技 エラー解決 やってみた 環境・Pythonの知識 基礎 クラスでプロパティを使う - Python…

DjangoのURLconfについて

DjangoのURLディスパッチャについて調べたときのメモ DjangoのURLディスパッチャについて調べたときのメモ URLディスパッチャ リクエストからレスポンスまでの流れ URLconf(urls.py, URLディスパッチャの設定ファイル)の役割 URLconfは2種類ある views.pyの…

文字列の初めのほうが指定の文字列か str.startswith() - Python

文字列の初めのほうが指定の文字かどうかを確かめるには str の startswith()メソッドを使う >>> s = 'hello' >>> s.startswith('h') True >>> s.startswith('he') True >>> s.startswith('ha') False 参考文献 4. 組み込み型 — Python 3.6.3 ドキュメント

入力を受け取る input() - Python

ProgateでPythonの基礎を進めてる 標準入力から値を取得する方法をメモしておく input関数を使うことで標準入力から値を受け取ることができる >>> a = input('数値を入力してください-> ') 数値を入力してください-> 2 >>> a '2' input関数は入力値を文字列…

RoboBrowserを使ってWebページにログインしてクローリング

最近、下の本を読んでいる。RoboBrowserと言うものがあるらしいので、使ってみたときのメモ Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-作者: 加藤耕太出版社/メーカー: 技術評論社発売日: 2016/12/16メディア: 大型本この…

08. 暗号文

与えられた文字列の各文字を,以下の仕様で変換する関数cipherを実装せよ. - 英小文字ならば(219 - 文字コード)の文字に置換 - その他の文字はそのまま出力 この関数を用い,英語のメッセージを暗号化・復号化せよ. 回答 #!/bin/usr/env python ''' # 08. …

07. テンプレートによる文生成

引数x, y, zを受け取り「x時のyはz」という文字列を返す関数を実装せよ.さらに,x=12, y="気温", z=22.4として,実行結果を確認せよ. fプリフィックスでさくっとできた #!/bin/usr/env python ''' 07. テンプレートによる文生成 引数x, y, zを受け取り「x…

06. 集合

"paraparaparadise"と"paragraph"に含まれる文字bi-gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ.さらに,'se'というbi-gramがXおよびYに含まれるかどうかを調べよ. Pythonでやった 今回は set を使って解く問題だった …

05. n-gram

自分の力では文字列のみにしか対応できなかった。 間違った出力をしていたため、できていなかった... できるだけ、自分の力でできるようにしたい ほかの人の回答を見る前に書いたソース #!/bin/usr/env python ''' 与えられたシーケンス(文字列やリストなど…

pipenv パッケージングツール - Python

インストールする 使い方 pipenv install pipenv install モジュール名 pipenv run コマンド pipenv graph .env ファイルで専用の環境変数を設定 いろいろやったこと 仮想環境の作成 作成した仮想環境にモジュールをインストール 各プロジェクトに.vnevディ…

HTTPレスポングのエンコーディングを推測する chardet

サードパーティのchardetモジュールを使ってみる。 https://github.com/chardet/chardet 最近、この本を進めている。この本の中で、HTTPレスポンスのバイト配列からエンコーディングを推測する方法として、chardetモジュールが紹介だけされていた。気になっ…

04. 元素記号

言語処理100本ノック 2015の5つ目。 "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."という文を単語に分解し,1, 5, 6, 7, 8, 9, 15, 16, 19番目の単語は先頭の1文字,それ…