Python - 文字列①
このnoteでは、プログラム初心者にむけて、Pythonで文字列を扱う際の基本的な知識と、実際の使い方について記載しています
このnoteを読んでわかる・できること
・文字列とは何か理解できる
・数字の数値型 / 文字列型の違い
・文字列の書き方
noteの中で紹介してるコードは、コンソールなどで実際に動かして、何がどうなっているのか確認・理解しながら進めることをお勧めします。
プログラミングは実際に動かすことがとても重要で、書かれているものを読むだけの学習に比べ、習得するスピードもとても早いです。
是非内容を読むだけではなく、実際に動かしてみてください。
文字列とは
文字列とはデータ型の一種(str型)のことで、主にシングルクォートや、ダブルクォートを使って作成します。
具体的には、利用者向けに出力するメッセージを作成するときなどに使います。
① シングルクォートを使った文字列
a = '文字列①'
② ダブルクォートを使った文字列
a = "文字列②"
数字の扱われ方の違い
数字は、データ型として「数字(int型)」「文字列(str型)」のどちらでも使うことができます。
何かを計算する時は数字、何かメッセージ上に数字を書く場合は文字列などと用途によって使い分けます。
以下のように、計算式をシングルクォートで囲む/囲まない結果で、同じ文字であっても結果・データ型が異なっていることがわかります。
>> ① 文字を数字として扱う場合
>> num = 2 + 2
>> print(num, type(num))
4 <class 'int'>
>> ① 文字を文字列として扱う場合
>> msg = '2 + 2'
2 + 2 <class 'str'>
文字列の書き方(単一・複数行)
文字列は、1行で全ての文字を記載する場合と、複数業に渡って記載する場合とで書き方が異なります。
■単一行を書く場合
① シングルクォートまたはで囲む
② ダブルクォートで囲む
■複数行を書く場合
③ シングルクォート(×3)で囲む
④ ダブルクォート(×3)で囲む
① シングルクォートまたはで囲む
”文字列”として扱いた文字の両サイドを、シングルクォート[ ' ] で囲みます。
>> a = '例1'
>> print(a, type(a))
例1 <class 'str'>
② ダブルクォートまたはで囲む
”文字列”として扱いた文字の両サイドを、ダブルクォート[ " ] で囲みます。
>> b = "例2"
>> print(b, type(b))
例2 <class 'str'>
③シングルクォート(×3)で囲む
複数行にわたる文字列は、①②の記法で扱うことができません。
※2行目を書く前にSyntaxError(構文エラー)が出力されます。
実際に以下のような複数行にわたる文字列を出力してみましょう。
1行目
2行目
3行目
シングルクォートを使った場合
>> a = '1行目
File "<stdin>", line 1
a = '1行目
^
SyntaxError: EOL while scanning string literal
2行目を書く前に、エラーが出力されていることがわかります。
※ダブルクォートで行っても結果は変わりません。
シングルクォート(×3)を使った場合
>> a = '''1行目
... 2行目
... 3行目'''
>> print(a, type(a))
1行目
2行目
3行目 <class 'str'>
正常に出力までできていることがわかります。
④ダブルクォート(×3)で囲む
③と同じです。
>> a = """1行目
... 2行目
... 3行目"""
>> print(a, type(a))
1行目
2行目
3行目 <class 'str'>
複数行の綺麗な書き方
複数行は、前章で説明した方法でも記載できますが。
記載位置の先頭が統一されていないため、可読性の悪いコードになってしまいます。
>> a = '''1行目
... 2行目
... 3行目'''
>>
>> print(a)
1行目
2行目
3行目
>>
では、シングルクォートの直後に改行を入れてみましょう。
>> a = '''
... 1行目
... 2行目
... 3行目
... '''
>>
>> print(a)
1行目
2行目
3行目
>>
みやすいコードになりました。
しかし、この記載方法ですと、print()にて出力した結果の前後に改行が含まれてしまっています。
解決:バックスラッシュ(/)を入れる
複数行にわたって文字を記載するときは、以下のようにシングルクォート(×3)の直後・直前(前行)にバックスラッシュ(/)を追記することで、可読性の高いコードになります。
*バックスラッシュはMacの場合 < Option(⌥) ] + [ ¥ ] >で入力できます。
a = '''\
... 1行目
... 2行目
... 3行目\
... '''
>>
>> print(a)
1行目
2行目
3行目
>>