Pythonと過ごすクリスマス・イブ
クリスマス・イブを楽しく過ごすためのPythonプロジェクトを紹介します。
素晴らしいPythonプロジェクトであればAwesome-Pythonにリストがありますが、そういうところには載らない(orギリギリ載ってるかも?)ような珠玉の逸品揃いです。
役に立つものから役に立たないもの、冗談のようでいて実は便利なものまで4品を列挙しますので、どうかお楽しみください。
(***ご利用は自己責任でお願いします***)
Eve
トップバッターはEveです。
Eveは人間向けをコンセプトにしたシンプルなREST APIフレームワークです。
インストール方法はpip install Eve
だけです。
サンプルはeve demoとして用意されており、git clone https://github.com/pyeve/eve-demo.git
で入手可能です。
これでREST APIを作ることができます。
基本的にdict(辞書型)で階層構造にしてエンドポイントとデータ構造を表現します。
http://python-eve.org/rest_api_for_humans.html
https://github.com/pyeve/eve
http://python-eve.org/
fuzzywuzzy
続いてfuzzywuzzyです。
fuzzywuzzyはファジーな文字列マッチングツールで、比較対象の文字列がどのくらい似ているかをレーベンシュタイン距離によって計算してくれます。
インストールは以下です。
fuzzywuzzyとpython-Levenshteinをインストールします。
pip install fuzzywuzzy
pip install python-Levenshtein
使い方は以下のとおりです。
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
fuzz.ratio("this is a test", "this is a test!")
# 97
fuzz.partial_ratio("this is a test", "this is a test!")
# 100
fuzzywuzzyの便利なところは、複数候補にも同時に評価することができる点です。
さらには上位2位まで選択するというような使い方もできます。
choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"]
process.extract("new york jets", choices, limit=2)
# [('New York Jets', 100), ('New York Giants', 79)]
日本語にも対応しています。
マルチバイト対応もされているようです。
fuzz.ratio("サンタさんは良い子の家にきます。", "サンタさんは良い子の家にきます")
# 97 #読点の有無
fuzz.ratio("サンタさんは良い子の家にきます", "サンタさんは悪い子の家にきます")
# 93 #良いvs悪い
fuzz.ratio("サンタさんは良い子の家にきます", "サタンさんは悪い子の家にきます")
# 87 #サンタvsサタン、良いvs悪い
https://github.com/seatgeek/fuzzywuzzy
http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/
faker
3番手はfakerです。
fakerは嘘データを生成してくれるツールです。
データ登録やテストのためのモック・データがほしい!というときに最適です。
インストールはpip install Faker
です。
2秒くらいで済みます。
以下のような使い方をします。
from faker import Faker
fake = Faker()
print(fake.name())
# Mark Merritt
print(fake.address())
# 09646 Jessica Canyon Suite 800
# West Jeremychester, ND 96041-2287
print(fake.profile())
#{'address': 'PSC 3090, Box 7203\nAPO AP 74167', 'blood_group': 'B-', 'website': ['http://garcia.com/', 'http://singh.com/', 'https://www.lopez.com/'], 'username': 'jamesrhonda', 'mail': 'summerfernandez@hotmail.com', 'sex': 'M', 'name': 'Anthony Williams', 'ssn': '323-17-6270', 'residence': '52101 Cesar Glen Suite 343\nLake Matthewville, NV 14221-4334', 'company': 'Hopkins and Sons', 'job': "Nurse, children's", 'current_location': (Decimal('27.258387'), Decimal('-135.924368')), 'birthdate': '1983-11-07'}
fake = Faker()
print(fake.text())
# Ducimus eum minus ullam. Vel harum modi maxime consectetur natus. Blanditiis saepe quas minima.
# Eos tempore mollitia non iure error error assumenda.
日本語および各種言語にも対応していて名前や住所は本物ぽいです。
fake = Faker("ja_JP")
print(fake.name())
# 木村 裕太
print(fake.address())
# 広島県足立区池之端18丁目18番10号
文章やテキストも生成できますが、ちょっと変です。
print(fake.sentence())
#オークション敵対的なダイヤモンド参加する血まみれの風景。
素でこういう文を作ってドキドキさせてくれます。
https://github.com/joke2k/faker
https://faker.readthedocs.io/en/latest/
thefuck
最後はクリスマス・イブの夜を飾るのに最適なプロジェクト、thefuckです。
これも有名どころですね。
thefuckはターミナル・コマンドの打ち間違いを修正してくれるソフトウェアです。
使い方は簡単で、打ち間違いを実行したあとに、fuck
と打ち込むだけです。
正しいコマンド候補を教えてくれます。
インストール方法は簡単です。
OS別に、以下のいずれかでインストールできます。
# OS X
brew install thefuck
# Ubuntu
sudo apt update
sudo apt install python3-dev python3-pip
sudo pip3 install thefuck
# other OS
pip install thefuck
これであなたもfuck
し放題です。
打ち間違いのあとにfuck
すれば、正解候補を教えてくれます。正しいコマンドを↑↓で選び、確認して実行しましょう。
しかし確認せずにfuck
したいこともあると思います。
その場合はfuck -y
で自動的に第1候補を実行してくれます。
更にthefuckのにくいところは、fuck
は履歴に残りません。
history
しても自分がfuck
したことはバレないので、誰も見ていない間にfuck
し放題です。
なお、fuck
はfuck
できないのでご注意ください。
https://github.com/nvbn/thefuck
https://nvbn.github.io/2015/10/08/how-thefuck-works/