Paepoi » Python Tips » Python 基本
Python 基本
最終更新日 2019.03.31
文字列色々
#!/usr/bin/env python3 STR = '漢字も一文字だもん!' a = STR[3:6] # (開始位置 ,終了位置) b = STR[3:-3] # (開始位置 ,行末からの終了位置) c = STR[3:] # (開始位置から最後まで) d = STR[:-3] # (先頭から行末からの終了位置) print(a, b, c, d) #=> 一文字 一文字だ 一文字だもん! 漢字も一文字だ # 検索 print(STR.startswith('漢字')) # 最初 #=>True print(STR.endswith('もん!')) # 最後 #=>True print(STR.find('も')) # 最初の出現位置、存在しなければ -1 が戻る #=>2 print(STR.rfind('も')) # 最後の出現位置、存在しなければ -1 が戻る #=>7 print('もん' in STR) # 含まれている? #=>True print(STR.replace('もん', 'モン')) # 変換 #=>漢字も一文字だモン! print('ABCdef'.lower()); #=>abcdef print('ABCdef'.upper()); #=>ABCDEF # 先頭や末尾の IFS を取り除く s = ' ai ueo \n' # 先頭と末尾 print(s.strip()) #=> 'ai ueo' # 先頭のみ print(s.lstrip()) #=> 'ai ueo \n' # 末尾のみ print(s.rstrip()) #=> ' ai ueo' # 文字コード変換 utf8str = '文字列をUTF-8に'.encode('utf-8') ucs4str = utf8str.decode('utf-8') print(ucs4str); # Python3 文字列は UCS-4(UTF32) # 文字列を配列に inLF = '''スズキの バイクは カッコイイ''' arr = inLF.split('\n') print(arr) #=> [スズキの, バイクは, カッコイイ] # 配列を文字列に st = ''.join(arr) print(st); #=> スズキのバイクはカッコイイ # コードポイントを UNICODE 文字に変換 # JavaScript では String.fromCharCode(97); print(chr(97)) #=> 'a' # UNICODE 文字をコードポイントに変換 # JavaScript では String.charCodeAt('a'); print(ord('a')) #=> 97 # 文字列を逆転 s = 'あいうえお' print(s[::-1]) #=>おえういあ
ファイル名色々
#!/usr/bin/env python3 import os PATH = '/home/suzuki/バイク/カッコイイ.txt' print(os.path.exists(PATH)) #=> 存在すれば True print(os.path.basename(PATH)) #=> カッコイイ.txt print(os.path.dirname(PATH)) #=> /home/suzuki/バイク print(os.path.split(PATH)) #=> ('/home/suzuki/バイク', 'カッコイイ.txt') print(os.path.splitext(PATH)) #=> ('/home/suzuki/バイク/カッコイイ', '.txt') # 以下はカレントディレクトリが /home/suzuki/バイク の場合 print(os.path.expanduser('~/変態.bike')) #=> /home/suzuki/変態.bike print(os.path.abspath('ダサい.bike')) #=> /home/suzuki/バイク/ダサい.bike print(os.path.relpath('/home/suzuki/カッコワルイ.txt')) #=> ../カッコワルイ.txt
配列と連想配列
#!/usr/bin/env python3 # 配列宣言 ar = [1,2,3] # 追加 ar.append(7) #=> [1,2,3,7] # 前方に追加、書き換えではない ar.insert(0, 6) #=> [6,1,2,3,7] # 書き換え ar[1] = 44 #=> [6,44,2,3,7] # 削除、3 番目を取り除く、先頭はゼロ del ar[2] #=> [6,44,3,7] # 要素数 len(ar) #=> 4 # 合体 ar2 = [99,87] ar2.extend(ar) print(ar2) #=> [99,87,6,44,3,7] # 含まれている? if 44 in ar2: # 何番目にある? print(ar2.index(44)) #=> 3 # # 辞書(連想配列) # # 静的宣言 dic = { 'YES': 'Close to the Edge', 'King Crimson': 'In The Court Of The Crimson King' } # 関数で、こちらはキーを文字列にしなくてもいい dic2 = dict( PFM='Photos of Ghosts', Osanna='Palepli' ) # 合体 dic.update(dic2) # 書き換え dic['YES'] = '90125' # 追加 dic['EL&P'] = 'Tarkus' # 削除 del dic['King Crimson'] # キーが存在する? if 'YES' in dic: # 取り出し print(dic['YES']) #=> 90125 # for for key in dic.keys(): print('{}: {}'.format(key, dic[key])) '''output YES: 90125 PFM: Photos of Ghosts Osanna: Palepli EL&P: Tarkus '''
アスタリスク
#!/usr/bin/env python3 ''' 関数の引数で * が一つならリスト、二つなら辞書という扱い 呼び出し時の引数に明示的な [], {} は不要 ''' def list_func(*argv): for item in argv: print('{0}'.format(item)) def dict_func(**argv): for key, value in argv.items(): print('{0}: {1}'.format(key, value)) list_func(1, 'a', 3) dict_func(yamaha='Jog', honda='Dio')
for ループ(同時、インデックス)
#!/usr/bin/env python3 MOTORS = ['YAMAHA', 'HONDA', 'SUZUKI', 'KAWASAKI'] CYCLES = ['NIKEN', 'Super Cub', '刀', 'Z900RS'] # synchronous loop for motor, cycle in zip(MOTORS, CYCLES): print('{0}: {1}'.format(motor, cycle)) # index for i, cycle in enumerate(CYCLES): print('{0:03d}: {1}'.format(i, cycle))
引数から自分を取り除く
#!/usr/bin/env python3 import sys args = sys.argv[1:] for s in args: print(s)
処理時間を計る
#!/usr/bin/env python3 import time start = time.time() ''' 処理時間を計りたいコード ''' print(time.time() - start)
タイマー
#!/usr/bin/env python3 import threading class MyTimer: def __init__(self): self.count = 0 self.start_func() def start_func(self): ''' 2s 毎に print する 5 回で終了 ''' print('Count {0}'.format(self.count)) if self.count < 5: self.count += 1 t = threading.Timer(2.0, self.start_func) t.start() MyTimer()
四捨五入
#!/usr/bin/env python3 import math n = 3.14 print('{0},{1},{2}'.format( round(n), # 四捨五入、math 不要 math.ceil(n), # 切り上げ math.floor(n))) # 切り捨て #=>3,4,3
三項演算子
#!/usr/bin/env python3 num = 0 # なんやかんやで num を弄った後 res = 'ゼロです' if num == 0 else 'ゼロではありません' print(res)
正規表現
#!/usr/bin/env python3 import re for s in ['001.jpg', '002.JPEG', '003.Png', '004.gif', 'jpeg.gif']: ''' 大文字小文字を区別せず jpg, jpeg, png の拡張子を見つける例 r'' に注意 ''' if re.search(r'\.(jpe?g|png)$', s, re.I): print(s)
Fizz Buzz の例
#!/usr/bin/env python3 ''' 3 で割り切れる場合は Fizz 5 で割り切れる場合は Buzz 両者で割り切れる場合は Fizz Buzz というゲーム ''' for i in range(1, 101): if i % 3 ==0: if i % 5 == 0: print('FizzBuzz') else: print('Fizz') elif i % 5 == 0: print('Buzz') else: print(i)
Easter Egg
#!/usr/bin/env python3 import __hello__ import antigravity
Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.