Python2

レーベンシュタイン距離をいい感じにまとめているサイトがあった

いまさら編集距離 (Levenshtein Distance) を実装するぜ | takuti.me

pip install で詰まった時の話

python2.6 の pip install で詰まった時の話。 HTTP Error 403: SSL is required http://pypi.python.org/simple/ で pip install しようとしている場合、 以下で指定すると、うまくいく。 $ pip install xxxx -i https://pypi.python.org/simple/ $ pip ins…

pip.exceptions.DistributionNotFoundでpip installできない

以下でいけるっぽい。 $ pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org <package_name> stackoverflow.com</package_name>

Solrのelevate.xmlを確認する方法

elevate.xmlへの変更をtsvに出力。 import xml.etree.ElementTree as ETにて処理。 最初urllib2でとってきていたが、socketのエラーとかでデータが飛ぶので、requestsに変更。正規表現とかも意外に苦労した。 # -*- coding: utf-8 -*- # vim:tabstop=4:shift…

Excelをpythonで操作めちゃ便利(unicodeに変換してくれる)

以下のように使えて、めちゃ便利。 ただし、cell(0, 0) がexcelのA1に対応しており、そこの注意のみ必要。 import csvのようにunicode変換に悩むこともない。 import xlrd book = xlrd.open_workbook('test.xls') print book.name sheet1 = book.sheet_by_in…

tupleプルプル

tupleは一旦作成すると、値を変更できないけど、 "%s, %s" % tuple("hoge", "koge") のようについ変えられる。 追加で、ディレクトリを再帰的に取得するには下のようにすればいい。便利 $ grep -r 検索文字列 ディレクトリ tigawa.github.io

Mysqlのデータを変更する(MySQL-python==1.2.5)

データベースのqueryを整形する。データベースに突っ込む前に"をつけるのが必要なのとないのがあって訳わからん。 ついでにutf-8に変換しないといけないのと、conn.commit()しないとinsertが反映されないということでばりつまづいた。 # -*- coding: utf-8 -…

SQLとSolrの情報を削除する方法

簡単な処理をバッチ化した。MySQLにアクセスする方法がわかったことが大きな収穫。 # -*- coding: utf-8 -*- # vim:tabstop=4:shiftwidth=4:expandtab import sys import MySQLdb import json import urllib2 import argparse from datetime import datetime…

リストから重複した要素を削除したい

リストの中のリストの一部が重複した場合の処理 datas = [['111111', ], ['111111', ], ] seen = set() seen_add = seen.add datas = [x for x in datas if x[0] not in seen and not seen_add(x[0])] print datas # [['111111']] www.lifewithpython.com

日本語のcsvを取り扱う際便利(python2)

csvのunicode変換は手間取るけど、良さげな変換をクラスにしてまとめている人がいたので拝借した。 import csv import sys import tempfile import shutil import os calendar_dict = { "January": "1", "February": "2", "March": "3", "April": "4", "May"…

Atomのjson整形とGoogleAnalyticsについて

AtomのJsonデータをブラウザからコピーして、整形するときに使える。 loumo.jp また、ブログにはGoogleAnalyticsという便利ツールがあるらしい。 junichi-manga.com dev.classmethod.jp はじめてのアナリティクス API V4: インストール済みアプリケーション…

pythonのリスト内辞書のソートについて(JSON)

以下のような場合はこのようにソートできる。 >>>terms = [{'hoge':1}, {'hoge':3}, {'hoge':2}] >>>sorted(terms,key=lambda x:x['hoge'],reverse=True) [['hoge': 3}, {'hoge': 2}, {'hoge': 1}] jsonの値などをソートするときに有効。 nemupm.hatenablog.…

unicodeの"__mod__"について

__mod__は数値の場合、割り算のあまりとなっているが、文字列にも存在したので、調べて見た。 %は%sや%dなど、文字列のフォーマットとして使われているところからきているのか、 >>> print '%s'.__mod__('kokoko') kokoko のように使うっぽい。 qiita.com

MultiValueFieldがドキュメント見てもわからなかった。

Form fields | Django documentation | Django 上のドキュメント見てもよくわからなかったので、探しているといい感じに解説しているサイトがあった。 coderwall.com どうやら、1つのinputに対して、二つのformを取得できるようにカスタマイズできるらしい。

バックグラウンドで動かす方法(runserver)

python runserverを開発環境のバックで回していたい時。 $ nohup python apps/manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 < /dev/null & $ jobs $ ps aux | grep runserver $ %1 $ kill %1 これでいける。disownもあるけど、こっちの方がログアウト…

正規表現(sub, match)

pythonの正規表現でcompileしたのちにsubすると対象正規表現を一括で置換してくれる。 以下はアルファベット大文字の後に"_“を入れる変換。「(?!^)…」は…にマッチしたときにマッチしない。ただし、先頭を除く。 import re UPPER_RE = re.compile('(?!^)([A-Z…

サイドバーの情報をターミナルに出力する

Webのサイドバーの情報をスクレイピングする必要があったので、作ってみた。 requests、beautifulsoupとStackoverflowから拝借。。 import requests from bs4 import BeautifulSoup import pprint class MyPrettyPrinter(pprint.PrettyPrinter): def format(…

DictCursorについて(MySQL-python)

DictCursorはCursorと違って、dictをreturnするらしい。 なので、 import MySQLdb.cursors from django.db import connection conn = connection.connection cur = conn.cursor(MySQLdb.cursors.DictCursor) の場合は、DictCursorを引き継いだdjangoのcursor…

%のエスケープとstaticmethod

%のエスケープめんどくさくなっていた。 a = 'My name is 100%% %s .' しないとダメらしい stackoverflow.com staticmethodは何かと便利らしい。 hideharaaws.hatenablog.com

workon(mkvirtualenv)について

qiita.com

Apacheのサーバについて

djangoにてrunserverは自動更新するが、apacheはされない。 $ ps aux | grep python $ ps aux | grep httpd $ sudo /usr/local/apache24/bin/apachectl help $ sudo /usr/local/apache24/bin/apachectl graceful すると変更が反映される。 apache勉強しない…

Failed cleaning build dir for cryptographyについて

pipでcryptographyをインストールしようとした時に起こったエラー。 stackoverflowにあった。 $ pip install cryptography Failed cleaning build dir for cryptography !! stackoverflow.com

Pythonの多重継承の話

多重継承の話。引数に関して、左から右にオブジェクトを読んでいくが、 その子オブジェクトに関しても記述があった。今日はきついのでいつか解釈しよう。 class First(object): def __init__(self): print "first" class Second(First): def __init__(self):…

Pythonデコレータについてまとめてあった

@decoratorについてまとめてありものがあったので、転載した。 d.hatena.ne.jp d.hatena.ne.jp d.hatena.ne.jp

日本語漢字から読み仮名変換

まずはjanomeのインストール ailaby.com その後、以下のコードを実行すればtxtファイルを 漢字, その読み(例: 「金閣寺, キンカクジ」)と変換できる。 # coding:utf-8 import os import sys import codecs import tempfile import shutil import signal tr…

形態素解析について(アプリやその内容)

bita.jp

大量行のtsvファイル作成について更新

前回まで 前回まで作成したものに訂正を加えた。主な修正点は以下になる。 ランダム処理を一回にし、一番範囲の広いintの結果を再利用する。 処理について長かったので、各処理を分ける。 例外処理について、ログを取るようにする。 シグナルの例外処理の独…

Djangoの大量のモデル作成方法

概要 models.pyのクラス名とクラス変数をそれぞれcsvファイルにする。 $ python mkmodel_django.py models/クラス名.csvをする。 完成。 csvファイルの作成 クラス名.cvs オブジェクト名 オブジェクトの説明 備考 OBJECT_NAME 説明〜 備考〜 OBJECT_NAME.csv…

画面キャプチャした画像編集アプリ

evernote.com gyazo.com めちゃ便利! あと、Cmd + shift + G でMacのFinderで色々探せる。 この下はpythonのデバック! import pdb; pdb.set_trace()

Pythonで一億行のtsvファイルを作成する(高速化)

以下の課題に対して、コードを作成した。ちなみにargparseはまどろっこしいので、Clickを使用している。 百万行のファイルでおよそ39秒かかった。ここからの改善のしようがわからない。 1億行のrowを持つtsvファイルを出力するプログラムを作成せよ。 カラム…