python

Pythonの無名クラス

FormWizardを使って入力確認画面を実装するというのをやりたくて、昔書いたエントリを見返してた。FormWizardで確認画面を表示する - brainstorm FormWizardで入力確認表示のときのformをダミーにするというもの #forms.py class DummyFrom(forms.Form): pas…

Python2でCodeEvalのArray Absordity

input 5;0,1,2,3,0 20;0,1,10,3,2,4,5,7,6,8,11,9,15,12,13,4,16,18,17,14output 0 4 関連 : Go言語でCodeEvalのArray Absurdity - brainstorm

python 2.xでCodeEvalのSplit The Number

「3413289830 a-bcdefghij」だったら、3-413289830を計算して解を出力するinput 3413289830 a-bcdefghij 776 a+bc 12345 a+bcde 1232 ab+cdoutput -413289827 83 2346 44

範囲を指定してリスト(スライス)の値を削除する

pythonで[]を代入する書き方があるって知らなかった。 # coding=utf-8 l = [i for i in range(0, 10)] assert l == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 範囲を指定して値を削除 # del [2:4] l[2:4] = [] assert l == [0, 1, 4, 5, 6, 7, 8, 9] goのスライスだ…

pythonで辞書を値で並べ替える

# coding=utf-8 d = {'john': 22, 'ringo': 22, 'paul': 20, 'george': 19} # 昇順 assert sorted(d.items(), key=lambda x: x[1]) \ == [('george', 19), ('paul', 20), ('ringo', 22), ('john', 22)] # 降順 assert sorted(d.items(), key=lambda x: x[1],…

RedisのSorted Setで時系列のデータを扱う

redisでtwitterのタイムラインのように時系列でデータを保存することを考えてみる。新しく追加されたデータを先に取得できるようにする必要がある。ページングするのに、最後に返したデータのポジションは取得できず、データそのものが渡されると仮定。つま…

flake8でSouthのmigrationsファイルをチェック対象から外す

PycharmのExternal Toolsに、ディレクトリごとflake8のチェックをかけるツールを設定をしているんだけど、southのmigrationsファイルがひっかかるのがイマイチだった。exclude設定ができないはずはないんだから早く設定すればよかった。

MacでMercurialのHTTPS認証のパスワードをキーチェーンに保存する

いちいちuser/passを入力するのが面倒。一つの方法として~/.hgrcにuser/passを書いてしまう手がある。 [auth] er.prefix = https://example.repository.com er.username = {username} er.password = {password}ただし平文でパスワードを書くことになる 別の…

url文字列とクエリパラメータの組み立てについて

ありがちな書き方 import urllib def build_url(base_url, params=None): if params is None: params = {} return base_url + '?' + urllib.urlencode(params) ケースによっては問題がある # 正常に処理できるパターン print build_url("http://example.com"…

PythonでCodeEvalのLowest Common Ancestor

PythonでCodeEvalのMth to last element

CodeEval以下のようなファイルが与えられるのでinput.txt a b c d 4 e f g h 2 各行の一番最後の数値mを取得して、m以外の文字の後ろからm番目(1 origin)を出力する output a g

PythonでCodeEvalのStack Implementation

関連 : Go言語でCodeEvalのStack Implementation - brainstorm

PythonでCodeEvalのLongest Lines

CodeEval入力ファイルの1行目が取得する行数n 2行目以降を長い順でn行取得して表示input.txt 2 Hello World CodeEval Quick Fox A San Franciscooutput San Francisco Hello World

Python 2.xでCodeEvalのHex to Decimal

CodeEval You will be given a hexadecimal (base 16) number. Convert it into decimal (base 10). input.txt 9f 11output 159 17

Python 2.xでCodeEvalのN Mod M

CodeEval組み込みの機能を使わずに余りを求めるという問題input.txt 20,6 2,3output 2 2

Go言語とpythonで環境変数を扱う

os.environを使う # coding=utf-8 import os # 環境変数設定 os.environ["hoge"] = "fuga" # 環境変数取得 print "hoge is {}".format(os.environ["hoge"]) # -> hoge is fuga # 環境変数をリストで取得 for i, pair in enumerate(os.environ.iteritems()): …

Go言語とpythonでurlをパースする

python # coding=utf-8 from urlparse import urlparse, parse_qs s = "http://www.cwi.nl:80/%7Eguido/Python.html?a=b#f" u = urlparse(s) print u # スキーム print u.scheme # -> http # ホスト print u.netloc # -> www.cwi.nl:80 # ポート番号とhostna…

Go言語で文字列がasciiのみで構成されているか調べる

pythonで文字列がascii文字のみで構成されているかどうかを調べる方法をググってて、encodeとかdecodeを使う方法を見つけた。 def is_ascii(u): try: if isinstance(u, unicode): u.encode('ascii') elif isinstance(u, str): u.decode('ascii') else: retur…

Pythonでコマンドライン引数に渡されたマルチバイト文字をunicode型に変換する

argparseでマルチバイト文字を渡すとバイト列型として取得されるunicode型として扱いたい場合はdecodeする必要があるが、エンコーディングをどうするべきか調べてた多分sys.getfilesystemencodingを使えばいいんだと思うけど、macosxのpython2、python3でし…

collections.defaultdictで辞書の初期値を設定する

辞書で単語の出現回数をカウントするようなコードのサンプル初めて登場した単語のときだけ、インクリメントじゃなくて1を入れる処理をする必要がある data = open("sample.txt").read() words = data.split() d = {} for word in words: if word in d: d[wor…

pythonでリストを一定の長さに分割する

前にやってた気がするんだけど、とっさにでてこなかったのでググって調べてた。 How do you split a list into evenly sized chunks in Python? - Stack Overflow # coding=utf-8 def chunks(l, n): """ Yield successive n-sized chunks from l. """ for i …

csvkitでcsvとjsonを相互に変換する

昨日ちょっと試したcsvkitをもう少し触ってみる csvファイルをjson形式に変換する 例えばこんなcsvファイルを $ head japan_pref_population.csv pref,people,size,population 愛知県,"7,425,952","5,165.12","1,437.71" 愛媛県,"1,414,996","5,678.33",249.…

Python製のcsvファイルを処理するためのコマンドラインツール「csvkit」

csvファイルを扱うためのコマンドラインツールを集めたライブラリ。python製。csvkit 0.6.2 (beta) ― csvkit 0.6.2 (beta) documentationいろいろ試してみた。まずcsvファイルを用意。 以下のサイトからガンバ大阪の年間試合スケジュールをcsvファイルでDLさ…

django-devserver を試す

django標準のrunserverを置き換えて、開発時に便利な機能を使えるようにしたものらしい。django-devserver 0.6.2 : Python Package Index インストール pip install git+git://github.com/dcramer/django-devserver#egg=django-devserver 設定。INSTALLED_AP…

mockを使って「関数が実行されないこと」をテストする

mockを使ってテスト書いてて、「関数が実行されたこと」をテストするのに、assert_called_withとかassert_called_once_withとかいろいろ用意されていて便利だったで、「関数が実行されなかったこと」をテストするのはどうするのかと思って調べた。例えばある…

chardet.detectでWarning

あるプロジェクトでテスト実行したら以下のようなwarningが出てたので、発生箇所を調べた UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal if aBuf[:len(chunk)] == chunk:ソ…

djangoでfactory_boyを使ってみる

軽くさわってみて雰囲気をみてみたfactory_boy ― Factory Boy 2.1.2 documentation rbarrois/factory_boy インストール $ pip install factory_boyこんなエラーがでたけど、pip install -U setuptoolsしてリトライしたら成功した pkg_resources.VersionConfl…

Pythonで上書きせずに辞書をマージする

dict_a.update(dict_b)だと、dict_aの値をdict_bの値で上書きしてしまうので、上書きしないでマージする方法を調べてた。 # coding=utf-8 DEFAULT_OPTIONS = {'foo': 1, 'bar': 2} def sample_method(options=None): if not options: options = {} # 入力値…

いろいろなテキスト処理に使えるTextBlob

軽く試してみたTextBlob # coding=utf-8 from text.blob import TextBlob text = u""" I am honored to be with you today at your commencement from one of the finest universities in the world. I never graduated from college. Truth be told, this i…

flake8を試す

flake8 2.0 : Python Package Indexflake8はpythonのコードチェッカーで、以下の3つのツールのラッパーとなっている pyflakes pep8 Ned Batchelder's McCabe script McCabe scriptというのは循環的複雑度をチェックするもの(らしい)mccabe 0.2.1 : Python Pa…