Python
プログラミング
python3
プログラミング学習

はじめに

  • 文字列についておさらい

目次

  • 文字列
  • 文字列の生成
  • 文字列の操作

文字列

概要

文字列の生成

概要

  • 変更可能なオブジェクト
  • Python3ではUnicode文字列のみ

文字列の生成

  • 「'」または「"」で囲む
  • 「"""」で囲む
    • 改行をそのまま文字列として認識
記述例
>>> print('asdf')
asdf
>>> print("asdf")
asdf
>>> print("""asdf
... zxcv""")
asdf
zxcv

フォーマット文字列の生成

  • %演算子を利用して文字列を生成
    • %は代入のような意味を持つ
  • 型変換だけでなく、タプルや辞書との併用も可能
構文
'%変換型・・・' %('変換後の文字列',...)
記述例
>>> str1 = '%sは%sです' %('ぼく', 'ばか')
>>> str2 = '%(name)sは%(type)sです' %{'name': '彼', 'type': '天才'}
>>> print(str1)
ぼくはばかです
>>> print(str2)
彼は天才です

型変換の一覧

変換 意味
d 符号付き10進整数
i 符号付き10進整数
o 符号なし8進数
u 符号なし10進数
x 符号なし16進数(小文字)
X 符号なし16進数(大文字)
e 指数表記の浮動小数点数(小文字)
E 指数表記の浮動小数点数(大文字)
f 10進浮動小数点数
F 10進浮動小数点数
g 指数部が-4以上または精度以下の場合には"e"、それ以外の場合には”f”と同じ
G 指数部が-4以上または精度以下の場合には"e"、それ以外の場合には”F”と同じ
c 文字列一文字(整数または一文字からなる文字列を受理する)
r 文字列(Pythonオブジェクトをrepr()で変換)
s 文字列(Pythonオブジェクトをstr()で変換)
% 引数を変換されず、返される文字列中では文字"%"になる

formatメソッド

記述例
>>> str1 = '{0}は{1}です'.format('ぼく','ばか')
>>> d = {'name': '彼', 'type': '天才'}
>>> str2 = '{name}は{type}です'.format(**d)
>>> print(str1)
ぼくはばかです
>>> print(str2)
彼は天才です

文字列の操作

文字列の検索

  • in演算子を利用
記述例
>>> 'ぼく' in 'ぼくはばかです'
True
>>> '彼' in 'ぼくはばかです'
False

文字列のインデックスの取得

  • index()メソッドまたはfind()メソッドを利用する
  • 存在しない場合の振る舞いがメソッドにより異なる
    • index() ---> VauleError
    • find() ---> -1
構文
.index(検索対象文字列, 開始位置, 終了位置)
.find(検索対象文字列, 開始位置, 終了位置)
indexメソッド
>>> 'ぼくはばかです'.index('ぼく')
0
>>> 'ぼくはばかです'.index('彼')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found
findメソッド
>>> 'ぼくはばかです'.find('ぼく')
0
>>> 'ぼくはばかです'.find('彼')
-1

開始文字を調べる

  • startswith()メソッドを利用
構文
.startswith(検索文字列, 開始位置, 終了位置)
記述例
>>> 'ぼくはばかです'.startswith('ぼ')
True
>>> 'ぼくはばかです'.startswith('彼')
False

終了文字を調べる

  • endswith()メソッドを利用
構文
.endswith(検索文字列, 開始位置, 終了位置)
記述例
>>> 'ぼくはばかです'.endswith('ぼ')
False
>>> 'ぼくはばかです'.endswith('彼')
False

英文字の確認

  • isalpha()メソッドを利用
  • 日本語も含まれる
記述例
>>> 'ぼくはばかです'.isalpha()
True
>>> 'abc'.isalpha()
True
>>> '123abc'.isalpha()
False

英数字の確認

  • isalnum()メソッドを利用
  • 英数字の判断をする
  • 日本語も含まれる
記述例
>>> 'ぼくはばかです'.isalnum()
True
>>> 'abc'.isalnum()
True
>>> '123abc'.isalnum()
True

数値の確認

  • isdigit()メソッドまたはisnumeric()メソッドを利用
  • isnumeric()メソッドはローマ数字に対応
記述例
>>> '123'.isdigit()
True
>>> '123'.isnumeric()
True
>>> 'abc'.isdigit()
False
>>> 'abc'.isnumeric()
False
>>> 'Ⅴ'.isdigit()
False
>>> 'Ⅴ'.isnumeric()
True

文字列分割

  • split()メソッドを利用
構文
.split(区切り文字, 分割数)
記述例
>>> 'a,b,c'.split(',')
['a', 'b', 'c']
>>> 'a,b,c'.split(',')[1]
'b'
>>> 'a,b,c,d'.split(',', 2)
['a', 'b', 'c,d']
>>> 'a,b,c,d'.split(',', 1)
['a', 'b,c,d']
>>> 'a,b,c,d'.split(',', 0)
['a,b,c,d']

文字列の置換

  • replace()メソッドを利用
構文
.replace(置換対象文字列, 置換する文字列, 回数)
記述例
>>> 'abcdef'.replace('a', 'z')
'zbcdef'
>>> 'abcdef'.replace('abc', 'ghi')
'ghidef'