LoginSignup
1
2

More than 3 years have passed since last update.

Pythonにおける文字列操作

Last updated at Posted at 2020-06-25

※「退屈なことはPythonにやらせよう」の学習に際した備忘録的なやつです

目次

文字列は「""」または「''」で囲む
エスケープ文字
エスケープ文字を無視して表示する
複数行文字列
複数行コメント
文字列はインデックスやスライスで扱える
文字列に対するinとnot in演算子
文字列を大文字/小文字に変換する
全ての文字列が大文字/小文字であるかを判定
文字列が英文字だけで構成されているか判定
文字列が英文字か数字だけで構成されているか判定
文字列が数字だけから構成されているか判定
文字列がスペースかタブだけで構成されているか判定
大文字から始まり残りがすべて小文字の英単語から構成されているか判定
先頭の文字列を判定
後ろの文字列を判定
文字列のリストを1つの文字列に連結する
文字列を指定した区切り文字で分割し、リストを返す
対象の文字列にスペースを加えて、右揃え/左揃え/中央揃えにする
文字列の冒頭/末尾から指定した文字を除去

文字列は「""」または「''」で囲む

""で囲む場合、文字列がシングルクォートを含んでもOK
python.py
spam="That is Alice's cat."
print(spam)
result.
That is Alice's cat.

エスケープ文字

エスケープ文字 意味
\' シングルクォート
\" ダブルクォート
\t タブ
\n 改行
\ バックスラッシュ
python.py
print("Hello there!\nHow are you?\nI\'m doing fine.")
result.
Hello there!
How are you?
I'm doing fine.

エスケープ文字を無視して表示する

raw文字列

python.py
print(r'That is Carol\'s cat.')
result.
That is Carol\'s cat.

複数行文字列

複数行文字列の中ではシングルクォートやダブルクォートをエスケープしてもしなくでもかまわない

python.py
print('''Dear Alice,

Eve's cat has been arrested for catnapping, cat burglary, and extortion.

Sincerely,
Bob''')
result.
Dear Alice,

Eve's cat has been arrested for catnapping, cat burglary, and extortion.

Sincerely,
Bob

複数行コメント

python.py
"""これは

コメントです"""

文字列はインデックスやスライスで扱える

python.py
spam="Hello world!"
spam[0]
result.
'H'
python.py
spam="Hello world!"
spam[6:]
result.
'world!'

文字列に対するinとnot in演算子

python.py
'Hello' in 'Hello world'
result.
True
python.py
'cats' not in 'cats and dogs'
result.
False

文字列を大文字/小文字に変換する

upper()/lower()メソッド

python.py
spam="Hello world!"
spam.upper()
result.
'HELLO WORLD!'
python.py
spam="Hello world!"
spam.lower()
result.
'hello world!'

※upper()とlower()メソッドは文字列を返すので、その戻り値に対しても可能

python.py
print('Hello'.upper())
print('Hello'.upper().lower())
result.
HELLO
hello

全ての文字列が大文字/小文字であるかを判定

isupper()/islower()メソッド

python.py
print(spam.islower())
print(spam.isupper())
print('HELLO'.isupper())
print('abc12345'.islower())
print('12345'.islower())
print('12345'.isupper())
result.
False
False
True
True
False
False

文字列が英文字だけで構成されているか判定

isalpha()メソッド

python.py
print('hello'.isalpha())
print('hello123'.isalpha())
result.
True
False

文字列が英文字か数字だけで構成されているか判定

isalnum

python.py
print('hello123'.isalnum())
result.
True

文字列が数字だけから構成されているか判定

isdecimal()メソッド

python.py
print('123'.isdecimal())
result.
True

文字列がスペースかタブだけで構成されているか判定

isspace()メソッド

python.py
print(' '.isspace())
result.
True

大文字から始まり残りがすべて小文字の英単語から構成されているか判定

istitle()メソッド

python.py
print('This Is Title Case'.istitle())
print('This Is Title Case 123'.istitle())
print('This Is not Title Case'.istitle())
print('This is NOT Title Case Either'.istitle())
result.
True
True
False
False

先頭の文字列を判定

startswith()メソッド

python.py
print('Hello world!'.startswith('Hello'))
print('Hello world!'.startswith('Hello world!'))
result.
True
True

後ろの文字列を判定

endswith()メソッド

python.py
print('Hello world!'.endswith('world!'))
print('Hello world!'.endswith('Hello world!'))
result.
True
True

文字列のリストを1つの文字列に連結する

join()メソッド

python.py
print(', '.join(['cats', 'rats', 'bats']))
print(' '.join(['My', 'name', 'is', 'Simon']))
print('ABC'.join(['My', 'name', 'is', 'Simon']))
result.
cats, rats, bats
My name is Simon
MyABCnameABCisABCSimon

文字列を指定した区切り文字で分割し、リストを返す

split()メソッド

※区切り文字を指定しない場合はスペースやタブ改行などで区切られる

python.py
print('My name is Simon'.split())
print('MyABCnameABCisABCSimon'.split('ABC'))
result.
['My', 'name', 'is', 'Simon']
['My', 'name', 'is', 'Simon']
python.py
spam='''Dear Alice,
How have you been? I am fine.
There is a container in the fridge
that is loaded "Milk Experiments."
'''
spam.split('\n')
result.
['Dear Alice,',
 'How have you been? I am fine.',
 'There is a container in the fridge',
 'that is loaded "Milk Experiments."',
 '']

対象の文字列にスペースを加えて、右揃え/左揃え/中央揃えにする

rjust()/ljust()/center()メソッド

※'Hello'.rjust(10)の場合、10文字の中で'Hello'を右揃えする

python.py
print('Hello'.rjust(10))
print('Hello'.rjust(20))
print('Hello world'.rjust(20))
print('Hello'.ljust(10))
print('Hello'.rjust(10, '*'))
print('Hello'.ljust(20, '-'))
print('Hello'.center(20))
print('Hello'.center(20, '='))
result.
     Hello
               Hello
         Hello world
Hello     
*****Hello
Hello---------------
       Hello        
=======Hello========

文字列の冒頭/末尾から指定した文字を除去

strip()/rstrip()/lstrip()メソッド

※何も指定しない場合は空白文字を除去する

python.py
spam='      Hello world     '
print(spam.strip())
print(spam.rstrip())
print(spam.lstrip())
result.
Hello world
      Hello world
Hello world     
python.py
spam='SpamSpamBaconSpamEggsSpam'
spam.strip('SpamB')
result.
'conSpamEggs'
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2