2017-04-01から1ヶ月間の記事一覧

Pythonで一意な文字列を生成する

uuidモジュールで楽に生成できます import uuid ustr = uuid.uuid4() print(ustr) print(ustr.hex) $ py main.py 33536e0f-aef5-4dfc-9d5d-7c96c5139f0a 33536e0faef54dfc9d5d7c96c5139f0a

Argparseを使ったコマンドライン引数の管理

通常コマンドライン引数を扱うにはsys.argvを使います。 import sys args = sys.argv count = args[1] print(count) $ py main.py 10 10とてもシンプルですね。ただ実際にちゃんとしたプログラムを組む場合、例えばコマンドライン引数が渡されなかった場合に…

subprocessを使って外部プログラムを実行する

https://docs.python.jp/3/library/subprocess.htmlsubprocessには色々な関数が定義されているのでとりあえずいくつか使いそうなものを試してみます。例としてPythonから別のPythonのプログラムを実行する処理を実装してみます。 subprocess.check_callによ…

with文を利用したファイルの読み書き

例えば以下のようなファイルの読み込み処理があるとします。 fh = open('text.txt','rt') text = fh.read() fh.close() with文を使うと以下のようになります with open('text.txt','rt') as fh text = fh.read() with文を使うとcloseを明示的に呼ぶ必要がな…

Pythonでのファイル読み書き基礎

入門Python3 8.1 ファイルの読み書きです。まずはテキストデータの書き込み処理。openの第二引数にwを指定すると書き込みとなります。tはテキストモードでこれをbにすればバイナリモードのなります。 fh = open('output.txt','wt') fh.write('hogehoge') fh.…

Pythonでsleep

https://docs.python.jp/3/library/time.html#time.sleeptimeモジュールのsleep関数を使います from time import sleep print(1) sleep(1) print(2) $ py main.py 1 1sleep(1)で1秒スリープする感じです。float値でもいけるので0.5秒スリープしたりとかもで…

attrdictを使って辞書をオブジェクト変数としてアクセスできるように変換する

例えばPythonでJSONを読み込むとそれは辞書として変換される import json data = json.loads('{"a": 1,"b": {"c": 4} }') print(data) $ py main.py {'a': 1, 'b': {'c': 4}} 辞書なので各要素にアクセスする時は以下のようになる。 import json data = json…

importとfrom〜importについてもうすこし

モジュールのインポートについては以前学びましたがいまいち理解が追いついていなかったのでもっかいおさらい。 importで読み込んだものがなんなのか、typeで調べてみます。helloworld関数を持つtest.pyを用意します。 # -- test.py -- def helloworld(): pr…

pipによるパッケージのインストール

世に公開されているたくさんのパッケージをインストールしたりなんかしたりするためのツールです。今回は試しにrequestsってのを入れてみることにする。 $ pip install requestsこれだけでrequestsというパッケージが使用可能となる。 import requests url =…

「(?P・・・)」による名前付き後方参照

入門Python3 7.1.3.8 「(?P・・・)」という構文を使うと名前付きの後方参照ができます。参照するには「\g」と書きます。 import re str1 = "aa1bb2cc3bb4" str2 = re.sub('(?P<foo>\d+)',r'[\g<foo>]',str1) print(str2) $ py main.py aa[1]bb[2]cc[3]bb[4] またgroupでの</foo></foo>…

subによる文字列の置換

入門Python3 7.1.5 subで文字列の置換ができます。 import re str1 = "aa11bb22cc33bb" str2 = re.sub(r'\d+',':',str1) print(str2) $ py main.py aa:bb:cc:bb グループ化して後方参照することもできます。 import re str1 = "aa11bb22cc33bb" str2 = re.su…

リストから空要素を除去する

例えばsplitなどで以下のようなリストができることがあります。 import re str1 = "a:b:c:d::" r = re.split(r':',str1) print(r) $ py main.py ['a', 'b', 'c', 'd', '', '']このとき空文字の要素だけ除去された状態のリストを得たい場合、リスト内包表記を…

splitによる文字列の分割

入門Python3 7.1.4 splitで文字列を分割しリスト化することができます。 import re str1 = "a:b:c:d" r = re.split(r':',str1) print(r) $ py main.py ['a', 'b', 'c', 'd'] もちろん正規表現で分割もできます。 import re str1 = "a11b22c33d" r = re.split…

文字列中のバックスラッシュについて

文字列の前にrをつけるとバックスラッシュを特殊文字として展開しないようになります。 str1 = "a\tb" str2 = r"a\tb" print(str1) print(str2) $ py main.py a b a\tb 主に正規表現を書くときに使うと便利っぽいです。

正規表現の基礎

入門Python3 7.1.3 正規表現についてです。pythonの正規表現はなにやらいろいろメソッドがあったりして把握が大変なのでとにかく御託はいいから一番シンプルな使い方はなんなのってことで実装してみます。 str1 = "abcdefg" result = re.search('cde',str1) …