python3

str型・エスケープシーケンス・raw string

記事内に広告が含まれています。

目次

str型

文字列

文字列型 ( str ) は""(ダブルクオーテーション)や''(シングルクオーテーション)を使って定義します。

"abcdefghi"
"あいうえお"
"1234"

ここで気を付けたいことは"1234"は1234ではないということです。"1234"は型がstrに対して、1234は型がintだからです。

型の確認

type()を使うと、その変数の型を確認できるため実行すると、

tall="2021m"
print(type(tall)) #<class 'str'>

とわかるように、tallはstr(文字列)であることがわかる。

複数行の文字列を作成する場合

複数行の文字列を作成する場合は、シングルクオーテーションを三つ(''')またはダブルクオーテーションを三つ(""")使用することで複数行の文字列を作成できます。

multiline_string = '''複数
の
行'''

エスケープシーケンス

エスケープシーケンスは、バックスラッシュ(\)と1文字のコードで構成される特殊な文字列です。エスケープシーケンスを使用することで、文字列の中に特殊な文字や制御文字を表現することができます。

\n : 改行
\t : 水平タブ
\r : キャリッジリターン
\\ : バックスラッシュ (\)
\' : シングルクォーテーション
\" : ダブルクォーテーション

改行

文字列を改行したいとき、改行したいところに、\nを書く。

print("出力は\nabcdef\nghi") 
#出力は
#abcdef
#ghi

キャリッジリターン

for i in range(10):
    print(i)

0から9までの数値を1ずつ増やしながら、それぞれを改行を挟んで表示するプログラムです。

import time
for i in range(10):
    print(i,end="\r")
    time.sleep(1)

一方このコードは、0から9までの数値を1秒ごとに更新しながら、同じ行に表示し続けるプログラムです。そのため、最初に0が表示されて1秒後に1に更新されます。

キャリッジリターン

水平タブ

水平タブは、テキスト内で水平方向に一定のスペースを空けるために使用されます。

print("123456\tABC")

バックスラッシュ・シングルクォーテーション・ダブルクォーテーション

バックスラッシュ (\)、シングルクォーテーション (')、ダブルクォーテーション (") は、文字列内で特別な意味を持つ文字です。例えば、シングルクォーテーションで囲まれた文字列内にシングルクォーテーションを含めたい場合、\'を用いる必要があります。同様に、ダブルクォーテーションで囲まれた文字列内にダブルクォーテーションを含める場合、\"を用いる必要があります。例えば、以下のようにエスケープシーケンスを使用して、文字列内にこれらの特殊な文字を含めることができます。

my_string = 'こんにちは!, \'Hello!\''
print(my_string)
my_string = "こんにちは!, \"Hello!\""
print(my_string)
my_string = "こんにちは!, \\Hello!\\"
print(my_string)
# 出力:
# こんにちは!, 'Hello!'
# こんにちは!, "Hello!"
# こんにちは!, \Hello!\

raw string

Pythonの文字列には、raw stringと呼ばれる特殊な表記方法があります。raw stringは、バックスラッシュをエスケープシーケンスとして解釈するのではなく、単なる文字として扱います。raw stringを作成するには、文字列の前に r を付けます。

raw stringのメリット

my_string = 'C:\Users\myname\Documents'
print(my_string)

以上のようなコードがあったとき、以下のようなSyntaxErrorとなってしまいます

 my_string = 'C:\Users\myname\Documents'
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

これはバックスラッシュをエスケープシーケンスとして解釈しているため、発生しています。特に、Windowsのファイルのパスはバックスラッシュで区切っている。そのため、ファイルパスをそのままコピーして文字列型にして、エラーが発生するといううということが起こります。下記のように、raw stringを用いると、バックスラッシュをエスケープシーケンスとして解釈せずに単なる文字として扱ってくれます。

my_string = r'C:\Users\myname\Documents'
print(my_string)

-python3