Help us understand the problem. What is going on with this article?

Python3系の基礎文法(文字列)

More than 1 year has passed since last update.

概要

O'Reilly Japan の「入門 Python 3」を参考に、Python3系の基礎文法を勉強します。
同じようにPythonを勉強したいと思ってる方の参考になれば幸いです。

Pythonの文字列について

文字列はイミュータブル(後から値を変更できない)なので、文字列を書き換えることはできない。
例えば、ABCの先頭文字をGに変更する場合、下記のような方法を試みるとエラーになる。

>>> target = 'ABC'
>>> target[0] = 'G'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

書き換えたい場合、関数を使う等を行い新しい文字列として操作結果を取得する。

文字列の作成・抽出

文字列の作成

>>> # シングルクォートを使う場合
>>> 'sample'
'sample'

>>> # ダブルクォートを使う場合
>>> "sample"
'sample'

>>> # シングルクォート(3個)
>>> '''sample'''
'sample'

>>> # ダブルクォート(3個)
>>> """sample"""
'sample'

>>> # 空文字
>>> ''
''

文字の連結

>>> # リテラル文字列の連結
>>> 'ABC' + 'DEF'
'ABCDEF'

>>> # リテラル文字列の場合、並べるだけでも連結できる
>>> 'ABC' 'DEF'
'ABCDEF'

>>> # 文字列変数の連結
>>> target1 = 'ABC'
>>> target2 = 'DEF'
>>> target1 + target2
'ABCDEF'

>>> # 文字列変数の場合、並べただけだとエラーになる
>>> target1 = 'ABC'
>>> target2 = 'DEF'
>>> target1 target2
  File "<stdin>", line 1
    target1 target2
                  ^
SyntaxError: invalid syntax

文字列の繰り返し

>>> 'pyon ' * 5
'pyon pyon pyon pyon pyon '

文字列から特定文字を取り出す

>>> target = 'ABC'
>>> target[0]
'A'
>>> target[1]
'B'
>>> target[2]
'C'

スライス

スライスを使うと、文字列から部分文字列を取り出すことができる。

# [start:end:step]
#   start :先頭オフセット
#   end   :末尾オフセット
#   step  :ステップ(何文字ごとか)

>>> target = 'ABCDEFGHIJKLMN'

>>> # 文字列全体を取得
>>> target[:]
'ABCDEFGHIJKLMN'

>>> # オフセット5から末尾まで
>>> target[5:]
'FGHIJKLMN'

>>> # オフセット2から5
>>> target[2:5]
'CDE'

>>> # 最後の3文字
>>> target[-3:]
'LMN'

>>> # オフセット0から10までを2ステップごとに
>>> target[0:10:2]
'ACEGI'
>>> # このように省略することもできる
>>> target[:10:2]
'ACEGI'

関数による操作

str()による型変換

>>> str(123)
'123'
>>> str(True)
'True'

replace()による置換

>>> target = 'ABC'
>>> target.replace('A','G')
'GBC'

len()による長さの取得

>>> target = 'ABCDE'
>>> len(target)
5

split()による分割

>>> # セパレータにカンマを指定
>>> target = 'AB,C,DE,F'
>>> target.split(',')
['AB', 'C', 'DE', 'F']

>>> # セパレータを指定しない場合、空白文字(改行、スペース、タブ)をセパレータとして扱う
>>> target = 'A B C DE F'
>>> target.split()
['A', 'B', 'C', 'DE', 'F']

join()による結合

join()関数は、split()関数の逆

>>> # 区切り文字を指定してから、リストを指定
>>> str_list = ['AB', 'C', 'DE', 'F']
>>> target = ','.join(str_list)
>>> print(target)
AB,C,DE,F

startswith()による先頭文字判定

>>> target = 'ABCDEFGHIJKLMN'
>>> target.startswith('ABC')
True
>>> target.startswith('BCD')
False

endswith()による先頭文字判定

>>> target = 'ABCDEFGHIJKLMN'
>>> target.endswith('LMN')
True
>>> target.endswith('KLM')
False

find()によるオフセット取得

>>> # 見つかる場合
>>> target = 'ABCDEFGHIJKLMN'
>>> target.find('D')
3
>>> target.find('DE')
3
>>> # 見つからない場合、-1が返される
>>> target.find('DG')
-1
>>> target.find('T')
-1

count()による件数カウント

>>> target = 'AABBBCAAABCCCCCC'
>>> target.count('A')
5
>>> target.count('B')
4
>>> target.count('C')
7
>>> target.count('AA')
2
>>> target.count('D')
0

大文字、小文字の変更

capitalize()で先頭文字だけ大文字に変更

>>> target = 'thank you for coming.'
>>> target.capitalize()
'Thank you for coming.'

title()で全ての単語をタイトルケースに変更

>>> target = 'thank you for coming.'
>>> target.title()
'Thank You For Coming.'

upper()で全ての文字を大文字に変更

>>> target = 'thank you for coming.'
>>> target.upper()
'THANK YOU FOR COMING.'

lower()で全ての文字を小文字に変更

>>> target = 'THANK YOU FOR COMING.'
>>> target.lower()
'thank you for coming.'

swapcase()で大文字小文字を逆にする

>>> target = 'AbcdEFg'
>>> target.swapcase()
'aBCDefG'

文字の配置

center()で中央配置

>>> #スペース40の中で中央配置
>>> target = 'thank you for coming.'
>>> target.center(40)
'         thank you for coming.          '

ljust()で左端配置

>>> #スペース40の中で左端配置
>>> target = 'thank you for coming.'
>>> target.ljust(40)
'thank you for coming.                   '

rjust()で右端配置

>>> target = 'thank you for coming.'
>>> target.rjust(40)
'                   thank you for coming.'

その他の文字列関数が知りたくなったら

文字列関数の標準ドキュメント
http://bit.ly/py-docs-strings

Amtkxa
ソフトウェアエンジニアです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした