from datetime import datetime date_text = '2018-01-01T01:02:03Z' target_datetime = datetime.strptime(date_text, '%Y-%m-%dT%H:%M:%SZ')
from datetime import datetime target_datetime = datetime.now() date_text = target_datetime.strftime('%Y-%m-%dT%H:%M:%SZ')
from datetime import datetime from datetime import timedelta target_date = datetime.now() time_minutes = timedelta(minutes=int(minutes)) print(target_date + time_minutes)
datetime.timetuple で取得したタプルを、datetimeの引数に指定する事により、切り捨てられたdatetimeが得られる。
from datetime import datetime def trunc_date(target_date): """ 日時を年月日単位で切り捨てる """ now_date_tuple = target_date.timetuple()[:3] # 年月日のタプルを取得 #now_date_tuple = target_date.timetuple()[:4] # 年月日時のタプルを取得 #now_date_tuple = target_date.timetuple()[:5] # 年月日時分のタプルを取得 return datetime(*now_date_tuple) print(trunc_date(datetime.now()))
__enter__ 及び __exit__ メソッドを持つクラスを with 構文と共に利用することで、開始、終了処理を行う事ができる。
sample_with.py
# coding: utf-8 class SampleWith(object): def __init__(self): print('\t with class init') def __enter__(self): # 開始処理 print('\t with class enter') def __exit__(self, exc_type, exc_value, tb): # 終了処理 print('\t with class exit') if __name__ == '__main__': print('start') with SampleWith() as sample: print('\t\t internal start') for i in range(10): print(f'\t\t\t point {i:05d}') print('\t\t internal end') print('end')
実行結果
$python3 sample_with.py start with class init with class enter internal start point 00000 point 00001 point 00002 point 00003 point 00004 point 00005 point 00006 point 00007 point 00008 point 00009 internal end with class exit end
l1 = ['abc', 'def'] l2 = ['ghi', 'jkl'] l1.extend(l2) print(l1)
結果
['abc', 'def', 'ghi', 'jkl']
l1 = ['abc', 'def'] l2 = ['ghi', 'jkl'] l3 = l1 + l2 print(l3)
結果
['abc', 'def', 'ghi', 'jkl']
d1 = {'var1': 'abc', 'var2': 'def'} d2 = {'var3': 'ghi', 'var4': 'jkl'} d3 = {**d1, **d2} print(d3)
結果
{'var1': 'abc', 'var2': 'def', 'var3': 'ghi', 'var4': 'jkl'}
l1 = [ {'var1': 'a1', 'var2': 'b1'}, {'var1': 'a2', 'var2': 'b2'} ] # 各要素にvar3を追加 l2 = [{**x, **{'var3': f'c{i+1}'}} for i, x in enumerate(l1)] print(f'l2: {l2}') # 各要素のvar1の値を変更 l3 = [{**x, **{'var1': f'X{i+1}'}} for i, x in enumerate(l1)] print(f'l3: {l3}')
結果
l2: [{'var1': 'a1', 'var2': 'b1', 'var3': 'c1'}, {'var1': 'a2', 'var2': 'b2', 'var3': 'c2'}] l3: [{'var1': 'X1', 'var2': 'b1'}, {'var1': 'X2', 'var2': 'b2'}]
# 元リスト自体を変更する l1 = [10, 1, 5, 3, 4, 6, 7] l1.sort() print(f'l1: {l1}') l1.sort(reverse=True) print(f'l1(reverse): {l1}') # 結果を別リストに格納する l1 = [10, 1, 5, 3, 4, 6, 7] l2 = sorted(l1) print(f'l2: {l2}') l2 = sorted(l1, reverse=True) print(f'l2(reverse): {l2}') # dictのリストを特定のキーでソートする from operator import itemgetter dict_list = [ {'var1': 1, 'var2': 4, 'var3': 'c'}, {'var1': 4, 'var2': 2, 'var3': 'd'}, {'var1': 2, 'var2': 3, 'var3': 'a'}, {'var1': 3, 'var2': 1, 'var3': 'b'} ] sorted_dict_list = sorted(dict_list, key=itemgetter('var2')) # var2の値でソートする print(f'sorted_dict_list: {sorted_dict_list}')
結果
l1: [1, 3, 4, 5, 6, 7, 10] l1(reverse): [10, 7, 6, 5, 4, 3, 1] l2: [1, 3, 4, 5, 6, 7, 10] l2(reverse): [10, 7, 6, 5, 4, 3, 1] sorted_dict_list: [{'var1': 3, 'var2': 1, 'var3': 'b'}, {'var1': 4, 'var2': 2, 'var3': 'd'}, {'var1': 2, 'var2': 3, 'var3': 'a'}, {'var1': 1, 'var2': 4, 'var3': 'c'}]