部分文字列のテスト

例76 部分文字列のテスト

[任意]ファイル名: string.py エンコーディング: UTF-8

#! /usr/bin/python
# -*- coding: utf-8 -*-

# 部分文字列のテスト

print ('部分文字列のテスト')

# 角括弧に1つの値を入れるとその番号の文字(1文字でも型は文字列型)が,
# 2つの値を「:」で挟んで入れるとその範囲の文字列がそれぞれ得られる
# 角括弧内の値が正(>0)だと左端を0として数える
# 「:」の横の値を省略すると端までの指定となる(下の「test[:]」は「test」と同じ内容)
test = 'This is a test.'
print ('元の文字列:"{0}"\n 0番:"{1}"\n 4番まで:"{2}"\n 5番から7番:"{3}"\n 10番から:"{4}"'.format (test[:], test[0], test[:4], test[5:7], test[10:]))
test = 'これはテストです。'
# 日本語でも1文字ごとに処理される(バージョン2系は扱いが異なる)
# 角括弧内の値が負(<0)だと右から2文字目を-1として数える
print ('元の文字列:"{0}"\n -2番:"{1}"\n -6番まで:"{2}"\n -6番から-3番:"{3}"'.format (test, test[-2], test[:-6], test[-6:-3]))
# 右端までを指定する場合は「[開始位置]:」とする
# 「0」は右端にはならないので注意
print (' -3番から-2番:"{0}"\n -3番から-1番:"{1}"\n -3番から0番:"{2}"\n -3番から:"{3}"'.format (test[-3:-2], test[-3:-1], test[-3:0], test[-3:]))

# 文字列の一部を直接変更することはできない
try:
  test[2] = 'も'
except TypeError as e:
  print ('TypeError:', e)

# 文字目の一部を変更したものを新しい文字列として作ると部分的な置き換えができる
test2 = test[:2] + 'も' + test[3:]
print (test2)

# 「[元の文字列].replace([置換前文字列], [置換後文字列], [先頭からの置換個数])」で
# 一致文字列を置換した新しい文字列を得ることもできる(置換個数を省略すると全置換)
test3 = test.replace ('は', 'もまた', 1)
print (test3)

print ('終わり')

実行例:

部分文字列のテスト
元の文字列:"This is a test."
 0番:"T"
 4番まで:"This"
 5番から7番:"is"
 10番から:"test."
元の文字列:"これはテストです。"
 -2番:"す"
 -6番まで:"これは"
 -6番から-3番:"テスト"
 -3番から-2番:"で"
 -3番から-1番:"です"
 -3番から0番:""
 -3番から:"です。"
TypeError: 'str' object does not support item assignment
これもテストです。
これもまたテストです。
終わり