スライシングで遊ぶ

スライシングも非常に便利。リストや文字列に対して使えます。文字列の処理なんかには重宝しそうです。

とりあえず使ってみましょう。

また標準出力から文字列を読み取り、受け取った文字列の8文字までを結果として返す関数と、9文字目以降を*でマスクして返す関数を作ってみる。

cutletters.py

def cutletters(s,x):
return s[:x]
def maskletters(s,x):
cutlength = len(s) - x
if cutlength > 0:
s = s[:x]
s = s + '*' * cutlength
return s
else:
return s
while(1):
s = raw_input()
if s == '':
break
print cutletters(s,8)
print maskletters(s,8)

実行すると以下のようになる。

C:\Python24>python.exe cutletters.py
Michael Jordan
result1 : Michael
result2 : Michael ******
abcdefghijklmnopqrstu
result1 : abcdefgh
result2 : abcdefgh*************
hatena
result1 : hatena
result2 : hatena

マスクの方はもう少しスマートな書き方があるのかも。

追記:

こうすればもっとスマートだ。うん。リスト万歳。

def maskletters(s,x):
L = list(s)
L[x:] = ['*'] * (len(s) - x)
return ''.join(L)