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 --- 2025.