Operation KiWi

一生使える言語はPythonだと信じてる

微妙に便利かもしれないPython3の自作関数を公開するぜ!!

Python書いている時、毎回こういう関数書いているような気がしたので、少し紹介してみようと思います。

リスト内の重複している要素を削除する

s = ['a', 'b', 'c', 'c', 'd', 'd', 'd', 'e']
ans = list(set(s))

実行結果

ans
['c', 'd', 'e', 'b', 'a']

ただしこのやり方だと順番は保証されません。順番そのままにしたい場合は正攻法を使うしかないかと。for文でブン回したりenumerate関数使って順番を強制的に覚えさせとく…とか?

指定したディレクトリ以下の全てのファイルを返す

import os


def get_file_list(target_dir):
    """ 指定したディレクトリ内のファイルを再帰的に返す関数(例:log/) """
    file_list = []
    # 一覧取得
    for (root, dirs, files) in os.walk(target_dir):
        for file in files:
            file_list.append(os.path.join(root, file).replace("\\", "/"))
    return file_list

print(os.getcwd())
lists = get_file_list('log/')
print(lists)

実行結果

['log/app.log', 'log/ghostdriver.log']

os.walk()関数が肝ですね。再帰的に検索してくれるすごいやつです。

h抜けのURLを修復する

import re
 

def url_assist(url):
""" h抜きのURLを修復する """
    search_result = re.match('(ttps?|ftp)(://[-_.!~*\'()a-zA-Z0-9;?:@&=+$,%#]+)', url)
    if search_result:
       fixed_url = "h" + url
       return fixed_url
    return url

(主に)2ちゃんで役に立つ

URLに含まれる"/“のindexを全てリストで返す

url = 'http://www.kiwi-bird.xyz/'
[i for i, j in enumerate(url) if j == "/"]

結果

[5, 6, 24]

lxmlを使ってサイトのtitleを返す関数

import requests
import lxml.html


def get_title(root):
    """ HTMLページのタイトルを返す """
    pre_title = lxml.html.fromstring(root)
    raw_title = pre_title.xpath("//title/text()")[0]
    return raw_title.strip()

r = requests.get("http://www.kiwi-bird.xyz/")
get_title(r.text)

結果

'Operation KiWi'

終わり

たいしたことなくてすいません。楽しくて毎日コード書いてるんですが、入門Pythonが手放せなくて困っています…買ってからもう1年以上経つのにw

永遠の初心者 ここに眠る

入門 Python 3

入門 Python 3

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング