文字列の中の特定の文字を切り取る


概要


文字列の中で

:

を使うと部分的な切り取りが可能

        
temp = 'ABCDEFGHIJKLMNOPQRSTUVWXYZQ'
print(temp[2])
print(temp[-4])
print(temp[5:8])
print(temp[5:18:2])
print(temp[::-1])
print(len(temp))
print(temp.startswith('ABC'))
print(temp.endswith('XYZ'))
print(temp.find('Q'))
print(temp.rfind('Q'))
print(temp.count('Q'))
print(temp.isalnum())
        
      
        
変数tempにABCDEFGHIJKLMNOPQRSTUVWXYZを入れる
tempの前から3番目の文字を取り出す(初期値は0) ※A
tempの後ろから4つ目の文字を取り出す ※B
tempの前から6から9つ目の文字を取り出す(初期値は0) ※C
tempの前から0から19番目の文字を2つずつ空けて取り出す ※D
tempを逆順(-1ずつ空けて)に取り出す ※E
tempの文字の長さを出す ※F
tempの最初の出だしの文字はABCDで合っているかどうか ※G
tempの最初の終わり際の文字はXYZで合っているかどうか ※H
tempの中にQという最初の文字は前から何番目にあるか(初期値は0) ※I
tempの中にQという最後の文字は前から何番目にあるか(初期値は0) ※J
tempの中にQという最後の文字はいくつあるか ※K
tempの中身はすべて英数字かどうか ※L
        
      

print出力

        
C ※A
X ※B
FGH ※C
FHJLNPR ※D
QZYXWVUTSRQPONMLKJIHGFEDCBA ※E
27 ※F
True ※G
False ※H
16 ※I
26 ※J
2 ※K
True ※L
        
      

説明


使い道だが、ファイル名の拡張子を指定したい時に、たとえば

tempList = ['aa.txt','bb.py','cc.txt']
for temp in tempList:
    if temp[-4:] == '.txt':
        print(temp) #出力はaa.txt cc.txt

とすればテキストファイルだけ取り出せる。

findはその文字が含まれていなければ-1を返すので

temp = 'abcd'
print(temp.find('e')) #出力は-1

のようにすれば、その文字が含まれるかどうか調べるのに使える

より高度なことをするにはreモジュールを使った正規表現操作を参照
  

間違えやすい問題


正 temp.find('e')
誤 find(temp)

文字の後に.findなどと付ける。

pythonの標準ライブラリには説明書きとして

str.find

のように書いてあるが、これはstrオブジェクト(文字列)の後に
.findをつけるという意味。