Pythonにおける文字列操作

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

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

##文字列は「""」または「''」で囲む
#####""で囲む場合、文字列がシングルクォートを含んでも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.
```
<a id="anchor1"></a>

##エスケープ文字を無視して表示する
####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
```

##文字列のリストを１つの文字列に連結する
####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'
```