牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Python

Python で xlsx ファイルを読み込んで配列にするメモ

(python2.7.x) Install $ pip install xlrd Source code import xlrd def get_sheet_lines(xlsx_filename, sheet_name, num_of_header_lines=1): book = xlrd.open_workbook(xlsx_filename) sheet = book.sheet_by_name(sheet_name.decode('utf8')) lines = …

Python でランダムにパスワード生成してみるメモ

# coding=utf-8 import random def generate_password(password_length): digits_and_ascii_letters = list('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') ignore_strings = list('lIO0') password_strings = [s for s in digits_and_…

Python のクラスを継承した時にどちらのメッソドが上書きされるのかメモ

python2.7 # coding=utf-8 class Base: class_name = 'base' def method(self): print "Base!" print self.class_name class BaseB: class_name = 'base_b' def method(self): print "BaseB!!!!" print self.class_name class Hoge(Base, BaseB): class_name…

git commit時にPythonのFlake8でコードチェックするメモ

バージョン変わってやり方も変わってたので一応メモ $ pip install flake8 $ flake8 --version 3.2.1 # プロジェクトのルートで以下コマンド $flake8 --install-hook git ファイルが作成される .git/hooks/pre-commit #!/usr/local/opt/python/bin/python2.7…

flake8 の設定を変更するメモ

(python2.7.13, flake8v3.2.1) ~/.flake8 にファイルを作って設定を書く [flake8] max-line-length = 120 参考 Configuring Flake8 — flake8 3.3.0.dev0 documentation

Python で Loto6 の当選確率の計算をしてみるメモ

(pytho2.7) In [9]: import itertools In [10]: len([i for i in itertools.combinations(range(43), 6)]) Out[10]: 6096454 # 1等 1/6096454 In [19]: len([i for i in itertools.combinations(range(6), 5)]) * len([i for i in itertools.combinations(ra…

Python で Ruby の each_slice みたいなやつメモ

(python2.7) def each_slice(arr, n): return [arr[i:i + n] for i in range(0, len(arr), n)] print(each_slice([1, 2, 3, 4, 5], 2)) print(each_slice([1, 2, 3, 4, 5], 3)) print(each_slice([1, 2, 3, 4, 5], 4)) # => [[1, 2], [3, 4], [5]] # => [[1,…

django-ckeditor の画像アップロードでハマったメモ

(django1.8, python2.7) 手順 ここ に書いてあるけど... Add ckeditor_uploader to your INSTALLED_APPS setting Add CKEDITOR_UPLOAD_PATH = "uploads/" setting Add (r'^ckeditor/', include('ckeditor_uploader.urls')), project's urls.py 略 Install pi…

Python で Zip ファイルを解凍するメモ

(python2.7.11) from zipfile import ZipFile import os dir_name = 'fuga' os.mkdir(dir_name) with ZipFile('hoge.zip', 'r') as z: z.extractall(dir_name) extractall() でディレクトリを指定しないとカレントディレクトリにディレクトリを作らずファイ…

Python でファイル作成する時に指定したディレクトリが無ければ作るメモ

(python2.7.11) ディレクトリが無いとこで open して write するとエラーになるので mkdir する # coding=utf-8 import os def write(filename, text): file_path = os.path.dirname(filename) if not os.path.exists(file_path): os.makedirs(file_path) wi…

Python のメソッドを文字列で呼び出すメモ

(python2.7.11) # coding=utf-8 class Hoge: @property def fuga(self): return 'fugafuga' h = Hoge() print h.fuga print getattr(h, 'fuga') # print getattr(h, 'fu') # AttributeError print getattr(h, 'fu', 'Nothing!') # -> fugafuga # -> fugafuga…

Python3.5 の async を使って非同期でwebサイトにアクセスしてステータスコードを取得するメモ

(python3.5.1) Web DB Press Vol.82 の Go特集でやってたやつを python で書いてみる hoge.py import asyncio from urllib import request urls = [ 'http://example.com', 'http://example.net', 'http://example.org', ] async def display_status(url): r…

Python でとある日付から今日まで何日か取得するメモ

(python2.7.11) In [10]: import datetime In [11]: date = datetime.datetime.strptime('2016-01-01', '%Y-%m-%d') In [12]: date.today() Out[12]: datetime.datetime(2016, 3, 8, 16, 7, 57, 767309) In [13]: d = date.today() - date In [14]: d.days O…

Python で今日から30日後の日付はいつなのか取るメモ

(python2.7) 忘れるんでメモ 標準ライブラリのみで In [16]: import datetime In [17]: today = datetime.datetime.today() In [18]: today.strftime('%Y-%m-%d') Out[18]: '2016-02-12' In [19]: d = today + datetime.timedelta(days=30) In [21]: d.strft…

pip で前のバージョンの最新をインストールしたいメモ

例えば Django の最新バージョンは 1.9.1。だけど 1.8.x 系の最新をインストールしたい場合。 $ pip install 'Django<1.9' Collecting Django<1.9 Using cached Django-1.8.8-py2.py3-none-any.whl Installing collected packages: Django 参考 pipの使い方 …

関数呼び出しタイミングのメモ

いちおう想定通りの結果になるか確認してみた javascript (es2015) 'use strict'; function foo(func) { console.log('foo!'); func(); console.log('end foo!'); } foo(() => {console.log('bar!');}); //=> foo! //=> bar! //=> end foo! python 2.7.x #!/…

Python で画像URLから画像のサイズを取るメモ

(python2.7) $ pip install pillow #!/usr/bin/env python # coding=utf-8 from PIL import Image from cStringIO import StringIO from urllib import urlopen def get_image_size(url): file = StringIO(urlopen(url).read()) img = Image.open(file) retu…

Python と boto で S3 の情報を取得してみるメモ

# coding=utf-8 import json import re from boto3.session import Session AWS_ACCESS_KEY_ID = 'AWS_ACCESS_KEY_ID...' AWS_SECRET_ACCESS_KEY = 'AWS_SECRET_ACCESS_KEY...' BUCKET_NAME = 'hoge' session = Session( aws_access_key_id=AWS_ACCESS_KEY_I…

python で配列を n 個の配列に分割するメモ

コード # coding=utf-8 def chunked(iterable, n): return [iterable[x:x + n] for x in range(0, len(iterable), n)] if __name__ == '__main__': arr = range(10) print(chunked(arr, 4)) # => [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9]] 参考 python2でリスト…

python で yes/no で実行する/しないの処理のメモ

コード hoge.py # coding=utf-8 def yes_no_input(): while True: choice = raw_input("Please respond with 'yes' or 'no' [y/N]: ").lower() if choice in ['y', 'ye', 'yes']: return True elif choice in ['n', 'no']: return False if __name__ == '__m…

Python でバイグラムのメモ

(python2.7) def ngrams(text, n): text_list = list(text) return [text_list[i:i + n] for i, char in enumerate(text_list)] ngrams_list = ngrams(u"今日はいい天気ですね。", 2) print(("\n").join([u"{}".format(u"".join(chars)).encode('utf8') for …

Python で空文字列 "" とブール値の真か偽のメモ

(python2.7) $ ipython In [1]: def check(val): ...: if val: ...: return True ...: else: ...: return False ...: In [2]: check("") Out[2]: False In [3]: check("" and True) Out[3]: False In [4]: check("" and False) Out[4]: False In [6]: check(…

docker-compose で Django と PostgreSQL で runserver 起動してみるメモ

ほぼ "Getting started with Compose and Django" そのまま (macosx10.9, boot2docker1.6.0, docker-compose1.2.0, django1.8) インストール boot2docker http://boot2docker.io/ docker-compose Docker Compose - Docker Documentation boot2docker 実行 $ …

Docker でカレントディレクトリをマウントして Flask の表示を変更してみるメモ

開発環境を整えるのに何かいい方法ないかなと思いつつなんとなく (macosx10.9, boot2docker1.6.0) boot2docker インストール http://boot2docker.io/ 略 コード docker-sample-mount-a-volum/ Dockerfile hello.py requirements.txt Dockerfile FROM debian:…

Docker で最小限の flask コンテナを作って起動してみるメモ

(macosx10.9, boot2docker1.6.0) コードをコピペするの面倒なのでgithubに置いた https://github.com/CortYuming/docker-hello-flask 参考 WEB+DB PRESS Vol.86|技術評論社 Docker 特集

【書評】『Pythonエンジニア養成読本』を読んでみた

押さえておきたい事がひと通り含まれているので、これから Python を学びたい人や復習したい人にちょうど良さそう。 Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!]gihyo.jp 第1章 その特徴,歴史とコミュニティ The Zen of Python の和訳が掲載…

Python で XOR のメモ

(Python2.7) In [1]: 0 ^ 0 Out[1]: 0 In [2]: 0 ^ 1 Out[2]: 1 In [3]: 1 ^ 0 Out[3]: 1 In [4]: 1 ^ 1 Out[4]: 0 In [5]: bool(0) != bool(0) Out[5]: False In [6]: bool(0) != bool(1) Out[6]: True In [7]: bool(1) != bool(0) Out[7]: True In [8]: bo…

Python でソルト生成してハッシュ値メモ

(python2.7) import random def generate_salt(digit_num): DIGITS_AND_ALPHABETS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" return "".join(random.sample(DIGITS_AND_ALPHABETS, digit_num)) salt = generate_salt(20) print(s…

Python の配列だけでなく辞書でも pop() メモ

(python2.7) とあるライブラリのコード見てたらあれっこれは?と思い、手元でやってみたらできた... 配列で pop() まあこれは知ってた a = ['hoge', 'fuga'] b = a.pop() print(a) # ['hoge'] print(b) # fuga 辞書で pop() a = {'hoge': 'HOGE', 'fuga': 'F…

対数のメモ

指数例 3 対数例 3 In [1]: from math import log In [2]: 2 ** 3 Out[2]: 8 In [3]: log(8, 2) Out[3]: 3.0 参考 【対数】対数とはなにか | 大人が学び直す数学

Python で順列と組み合わせメモ

(python2.7) $ ipython In [1]: from itertools import combinations, permutations In [2]: arr = ['a', 'b', 'c', 'd'] In [3]: list(permutations(arr)) Out[3]: [('a', 'b', 'c', 'd'), ('a', 'b', 'd', 'c'), ('a', 'c', 'b', 'd'), ('a', 'c', 'd', 'b…

『数学ガール/乱択アルゴリズム』第2章「愚直な一歩の積み重ね」の疑似コードを Python で書いて計測してみるメモ

第4巻『数学ガール/乱択アルゴリズム』 (Python2.7) hoge.py なるべく疑似コードに近い感じで #!/usr/bin/env python # coding=utf8 def linear_search(A, n, v): # k = 1 k = 0 while k <= n: if A[k] == v: return True k += 1 return False def sentinel…

Javascript で Python の文字列フォーマットみたいなやつメモ

Python print("I'm {name}. {age} old.".format(name="Hogeo", age=3)) #-> I'm Hogeo. 3 old. Javascript console.log( "I'm {name}. {age} old.".replace( /\{(\w+)\}/g, function(m, k) { return { "name":"Hogeo", "age":3 }[k]; } ) ); //-> I'm Hogeo.…

Selenium + Python で MacOSX から仮想環境にある Windows7 上の Firefox でサイトを表示してスクリーンショットを取るメモ

やってみたら思ってたより簡単にできた。 仮想環境(Windows7) Vmware Fusion 5.0.3 Windows7 (64bit) インストール java と selenium-searver をダウンロード・インストール - jre-8u25-windows-x64 - selenium-server-standalone-2.44.0.jar ip 調べる ip…

『入門、Selenium』の「Page Objectsパターンを使ってログインページのテスト」を Python で書いてみるメモ

CodeGrid さんの記事 がとても良い感じなので Python で書いてみた。 元記事は Javascript。個人的に Python の方が分りやすいので。 (記事の購読は有料。フロントエンドに興味ある人には下手な書籍を購入するよりオススメ。) 『CodeGrid - フロントエンド…

Django で検索ワード数が不特定のリストで and 検索したい場合のメモ

2014-12-08訂正:or検索でなくてand検索だった (Django 1.6.x) import operator from characters.models import Character words_list = [ [u"行きます", u"親父にもぶたれたことないのに"], [u"赤い", u"三倍", u"マザコン"], [u"ニュータイプ", u"ララァ"]…

Javascript で Python の sum() みたいな関数のメモ

var sum = function(arr) { return arr.reduce(function(a, b) { return a + b; }); }; console.log(sum([1, 2, 3, 4, 5])); //-> 15 組み込み関数 — Python 2.7ja1 documentation - sum() Array.prototype.reduce - JavaScript | MDN

Python の json.dumps() で日本語が文字化けする場合のメモ

(python2.6.8) In [10]: import json In [11]: data = {"name": "ガッツ石松"} In [15]: print json.dumps(data) {"name": "\u30ac\u30c3\u30c4\u77f3\u677e"} In [16]: print json.dumps(data, ensure_ascii=False) {"name": "ガッツ石松"} 参考 Python - …

ワンライナーで Python に通してるパスを表示するメモ

(python2.7.8) $ python -c "import sys;print('\n'.join(sys.path))"

ワンライナーで Python の site-pakages のパスを表示するメモ

(python2.7.8) $ python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages installation - How do I find the location of my Pyt…

Emacs と ctags で Python のライブラリ含めてタグジャンプしたい場合のメモ

(python2.7.8) タグの作り方(暫定) その1 ctags -Re `python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"` .誰か上手なタグの作り方を教えて(´・ω・`) その2 追記 2014-11-06 必要なライブラリだけ指定してみる DIR=`p…

Django で非同期する Celery のメモ

Celery - Distributed Task Queue — Celery 3.1.16 documentation First Steps with Celery — Celery 3.1.16 documentation First steps with Django — Celery 3.1.16 documentation Celery 3.1 を Django で使う - Qiita

IPython notebook でコード表示のフォントを変更するメモ

(python2.7, ipython 2.1.0, MacOSX10.9) The IPython Notebook — IPython デフォルトだとインデントとか括弧が分りづらいので変更してみる。 デフォルト font-family: monospace; 変更する ~/.ipython/profile_default/static/custom/custom.css .CodeMirro…

Python で Loto6 の組み合わせは何通りか求めるメモ

(python2.7) 組み合わせの総数 (引用: 組合せ (数学) - Wikipedia) math.factorial を利用 import math def nCm(n, m): return math.factorial(n) / (math.factorial(m) * (math.factorial(n - m))) print nCm(43, 6) #-> 6096454 scipy.misc.comb を利用 …

対数 log のメモ

(python2.7) In [1]: from math import log In [2]: In [2]: log(4, 2) Out[2]: 2.0 In [4]: 2**2 Out[4]: 4 In [5]: 4 Out[5]: 4 In [6]: log(9, 3) Out[6]: 2.0 In [8]: 3**2 Out[8]: 9 In [10]: log(1, 10) Out[10]: 0.0 In [11]: 10**0.0 Out[11]: 1.0 I…

Python の「Yahoo!デベロッパーズネットワークの日本語形態素解析で分かち書きする」スクリプトを MeCab を使ってやってみるメモ

」メモ(python2.7.7)元ネタ 第3回 ベイジアンフィルタを実装してみよう:機械学習 はじめよう|gihyo.jp … 技術評論社 リスト1 形態素解析を使って,わかち書きをする(morphological.py) Yahoo!デベロッパーズネットワークの日本語形態素解析が使われてい…

Python でやってみる『はじめMath! Javaでコンピュータ数学 第39回 行列の数学 ベクトルのスカラ倍と乗算』メモ

(python2.7.7)元ネタ 第39回 行列の数学 ベクトルのスカラ倍と乗算:はじめMath! Javaでコンピュータ数学|gihyo.jp … 技術評論社 問題:ベクトルのスカラ倍,ベクトル同士の乗算を行う関数を作りましょう。 (1)ベクトルをスカラ倍する関数を作りましょう…

Python と Pandas と仙台市の統計データで遊んでみるメモ

(python2.7.7, pandas0.14.0)下記の記事を仙台市の統計データでやってみた。 ITエンジニアのためのデータサイエンティスト養成講座(特別編):学習塾を運営するのに最適なのはどこ? オープンデータを活用して実践的なスキルを身に付ける (1/3) - @IT 結果…

scikit-learn のリンクメモ

scikit-learn: machine learning in Python — scikit-learn 0.15.2 documentation gmonce/scikit-learn-book · GitHub scikit-learnを用いた機械学習チュートリアル pythonの機械学習ライブラリscikit-learnの紹介 - 唯物是真 @Scaled_Wurm 2013.07.15 はし…

Python でやってみる『"データサイエンティスト養成読本" 特集1 第1章 Rで統計解析を始めよう』

(python2.7.7)R のチュートリアルを Python で書き換えてみる。 取りあえずリスト1〜12までやってみた。 Gist にアップして nbviewer で見ると notebook が綺麗に表示される。これ便利。 http://nbviewer.ipython.org/gist/CortYuming/16fe5820c653d0dfecc3 …