Pythonでよく使う変数や関数のメモ

Pythonでよく使う変数や関数のメモ
Pythonでよく使う変数や関数のメモ

この記事はPythonでよく使う変数の扱いや、忘れやすい関数を忘備録的にメモした記事になります。

文字列が含まれているかどうか判定したい

特定の文字が含まれてるかどうかの判定は 検索文字 in ターゲット を使う。

py
if 'world' in "Hello world!":
    print("worldが含まれている")

辞書から値が含まれているキーを抽出したい

まず、こんな感じの辞書を用意しておく。

py
dic = {
    'programming': ['android','c','css','python','swift','kotlin'],
    'gardening': ['hydroponics','planter'],
    'iot': ['raspberry_pi','arduino'],
    'analog': ['speaker', 'electric_circuit'],
    'posts': ['localize','hotsand','camp'],
}

この辞書の中からたとえば、pythonの文字列が含まれているキーを見つけたい場合は、次のように書くことができる。

py
for key, array in dic.items():
    if "python" in array:
        print(key)

配列を文字で分割結合したい

分割する場合

split() を使うとテキストを特定の文字で分割して、配列にすることができる。
py
arr = text.split(',')

結合する場合

join()を使うと配列を特定の文字でつなげて、テキストに変換できる。
py
text = ','.join(arr)

文字を置換する

文字を指定して置換: replace()

replace()を使うと、置換したい文字と完全一致した場合に置換される。
py
s = 'Hello world!'
s.replace('world', 'Python')

# Hello Python!

正規表現で置換: re.sub()

re.sub() を使うと置換したい文字を正規表現でマッチさせることができる。
py
import re

s = 'Hello world!'
re.sub('[a-z]*!', 'Python!', s)

# Hello Python!

特定の文字を抽出したい

URLを抽出する: findall()

findall() を使うと正規表現にマッチしたすべての文字列を配列として抽出することができる。

たとえば次の文章を、変数 text として用意する。

Androidの公式ドキュメント よりダイアログの表示サンプルを試してみた。ドキュメントではJavaで記述されているがここではKotlinに書き直して実装した。

なお、本プロジェクトはGithubリポジトリへ公開してある。AndroidExercise/TryDialog at master · araemon/AndroidExercise · GitHub

この中からすべてのURLを取り出したい場合、次のようにして抽出することができる。

py
import re

pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"
re.findall(pattern, text)

# ['https://developer.android.com/guide/topics/ui/dialogs?hl=ja', 'https://github.com/araemon/AndroidExercise/tree/master/TryDialog']

ファイルの最終変更日を取得したい

ファイルの最終変更日を取得するには os.statst_mtime を使う。

py
st = os.stat('item_apps.html')
print(st.st_mtime) #最終変更日タイムスタンプ

下限から上限の範囲で数値を収めるclamp関数

py
def clamp(n, smallest, largest):
    return max(smallest, min(n, largest))
shell
>>> clamp(0.3, 0, 1)
0.3

>>> clamp(1.5, 0, 1)
1

>>> clamp(-3, 0, 1)
0

xy座標における二つのポイントの距離判定

py
def is_nearby(pt1, pt2): # pt -> (x, y)
    if (pt1[0] - pt2[0])**2 + (pt1[1] - pt2[1])**2 < 2000:
        return True
    return False

この関数は、次の記事のジェネラティブアートで使ってます。

RGBからOpenCVで扱えるHSV色空間の値へ変換する

py
def rgb2hsv(rgb):
    r,g,b = rgb
    h,s,v = colorsys.rgb_to_hsv(r, g, b)
    return int(h*180), int(s*255), int(v)
記号意味値の範囲
h色相0~180
s彩度0~255
v明度0~255

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

Python学習にオススメの本をご紹介!
Pandasでデータサイエンスはじめよう!
スクレイピングにオススメの書籍

▼ Beautiful Soup4を使ったWebクローリングをはじめ、表データをpandasやOpenPyXL、matplotでデータ解析、グラフ表示などのスクレイピングのやり方が分かりやすく説明されてます。図解が多いのでPython初心者の方でも読み進められる内容となってます。

関連記事