Pythonを勉強するために本を買ったけど,積読してる.
最初の方の数値や算術演算,文字列の扱いで止まっている.
“エスケープ文字”を知らない方!
そんな方が,文字列の扱いをマスターして,変数や関数の学習に進むための記事です.
本記事の内容
いわゆる’Hello World’のような文字列がどのようなデータ型か解説します.前回の数値の記事と同様に,コードを打ちながら学んで行きましょう.
Pythonの文法基礎から実務的な分析・機械学習まで学べるオンライン学習サービス(1週間無料です)
文字列とは|作成方法や簡単な操作
文字列はいくつかの文字の並び(シーケンス)です.Python(Python3)の文字列(str型)は,Unicode文字—世界の言語のすべての文字と数字,記号,絵文字を定義する—のシーケンスです.従って,英語も,日本語も,数字も,絵文字も,Pythonの文字列で扱うことができます.
文字列を使う場面としては,顧客データや,遺伝子の解析などが想定されます.まずは,文字列を入力し,実行結果がどのように表示されるかをみてみましょう,同時に,入力ルールの理解を深めましょう.
文字列の作成
文字の並びを半角の’(単引用符;シングルクォーテーション),”(二重引用符;ダブルクォーテーション),’ ‘ ‘または ” ” “(トリプルクォーテーション)で囲んで記述します.実行結果は、Google colaboratory の場合,シングルクォーテーションで囲まれて出力されます—たとえダブルクォーテーションで入力,実行しても—.
シングルクォーテーション,またはダブルクォーテーションで囲んで記述する.
'Hello World'
"Hello World"
シングルクォーテーションで囲むと,文字列にダブルクォーテーションを記述できる.
'"リスキリング"って和製英語やで。'
ダブルクォーテーションで囲むと,文字列にシングルクォーテーションを記述できる.
"'リスキリング'って和製英語やで。"
"I'll be there."
記述する文字列と同じクォーテーションで囲む場合,直前にバックスラッシュを入れる.(詳細は後述)
'I\'ll be there.'
数字,記号,絵文字も,文字列として記述できる.
"3"
"円周率 π=3.14…🥺"
3, 1, ., 4の4つの文字が並んだ状態です.
"「入力フォームはこちら:」みたいに記号を扱えるで"
クォーテーションの中に何も囲まない場合,空文字列(または空列)となる.
''
""
まとめ
- シングルクォーテーション,またはダブルクォーテーションで囲んで記述する.
- シングルクォーテーションで囲むと,文字列にダブルクォーテーションを記述できる.
- ダブルクォーテーションで囲むと,文字列にシングルクォーテーションを記述できる.
- 記述する文字列と同じクォーテーションで囲む場合,直前にバックスラッシュを入れる.
- 数字,記号,絵文字も,文字列として記述できる.
- クォーテーションの中に何も囲まない場合,空文字列(または空列)となる.
文字列のデータ型の確認
type()関数を使って,()内に入力したオブジェクトの型が出力されます.()内に文字列を入力して,「str」と表示されるか確認してみましょう.関数のことを詳しく説明していないので,ここではこのようなコードで確認するんだなくらいの理解で結構です.
type("3")
「文字列の”3″」と「整数の3」は異なります.
type('円周率 π=3.14…🥺')
文字列と数値のデータ型の変換
文字列と数値のオブジェクトをお互いに変換することができます.
文字列の数値化
数値の記事で,異なる型の数値オブジェクト同士を変換する方法を紹介しました.それと同様に,int()関数やfloat()関数を用いて,数値のみの文字列を,数値オブジェクトに変換できます.用途としては,全角と半角の数字が混在しているデータに対して,全て半角の数値に変換したい時などに利用します.
int()関数:文字列→整数
整数の文字列を→int型(整数)
int('123')
全角の整数の文字列→半角の整数
int('123')
float()関数:文字列→浮動小数点数
整数,または浮動小数点数の文字列の場合,浮動小数点数オブジェクトに変換されます.
float('123')
float('123.4')
全角の浮動小数点数の文字列→半角の浮動小数点数
float('123.4')
数値の文字列化
逆に,str()関数を用いて,整数,または浮動小数点数を,文字列に変換できます.
str(123)
str(123.4)
文字列による算術演算!?
算術演算子を用いて,文字列を結合したり,繰り返し記述したりできます.用途としては,不連続な複数のデータがあった時に,連結させるような場合です.
- +演算子:足し算で文字列同士を結合
- *演算子:かけ算で文字列を繰り返す
足し算(文字列の結合)
足し算の記号は,文字列の連結に用いられます.
"棚から"+"Python"
掛け算(文字列の繰り返し)
*演算子を用いて,文字列にint型(整数型の値)をかけ合わせると,文字列を繰り返すことができます.
"TA"*2
足し算と掛け算を組み合わせた使用
"Choo "*2 + "TRAIN"
"となりの" + "トト◯ "*4
"56"*2 + "の実"
'い〜つの日〜か〜 ' + "I'll be there "*3
失礼m(_ _)m
ふざけすぎました.
世代がバレましたね笑
文字列とインデックス
文字列から1文字,または一部の文字列を取り出す方法を解説します.このとき,「インデックス」という方法を用いますが,まずは「インデックス」について説明します.
インデックスとは,「索引」,「見出し」,「指標」,「指数」などの意味を持つ英単語です.インデックスを指定するには、角カッコ(ブラケット)[ ] の中にオフセットを添えます.
pythonを学んだことのある方は,「インデックス」という言葉をご存じの方も多いと思いますが,「オフセット」とは一体何?という方も多いでしょう.
ITの分野では、何かの位置を指し示す際に、基準となる位置からの差(距離、ズレ、相対位置)を表す値のことをオフセットということが多い。(IT用語辞典)
表のように,先頭の文字のオフセットを0,その次を1・・・または末尾の文字のオフセットを-1,その次を−2・・・として,指定することができます.
文字列 | p | y | t | h | o | n |
オフセット(先頭から) | 0 | 1 | 2 | 3 | 4 | 5 |
オフセット(末尾から) | -6 | -5 | -4 | -3 | -2 | -1 |
文字の抽出
文字列から1つの文字をを取り出すには,文字列の後ろに角カッコ(ブラケット)[ ]を付して,その中に取り出したい文字のオフセットを入力してインデックスします.
"Python"[1]
文字列のスライス
文字列から一部の文字列を取り出すには,その取り出し方によって,—インデックスを使った—いくつかの方法があります.角カッコに,開始するオフセット(開始値),停止するオフセット(停止値)などを指定する方法です.
停止値は,取り出したい文字列のオフセットに+1加えたオフセットを指定します.15文字の文字列(”Pythonの文字列のスライス”)で練習してみましょう.文字の最初は混乱すると思いますので,文字数を数えて確認しながらコードを入力してください.
[:]→先頭から末尾まで文字列全体を取り出す
"Pythonの文字列のスライス"[:]
[開始値:]→指定した開始値から末尾までの文字列を取り出す
"Pythonの文字列のスライス"[7:]
"Pythonの文字列のスライス"[-8:]
[:停止値]→先頭([0])から指定した停止値の1つ手前までの文字列を取り出す
"Pythonの文字列のスライス"[:10]
"Pythonの文字列のスライス"[:-5]
[開始値:停止値]→指定した開始値から停止値の1つ手前までの文字列を取り出す
"Pythonの文字列のスライス"[7:10]
[開始値:停止値:間隔]→指定した開始値から停止値の1つ手前まで,指定した間隔ごとに文字を取り出す
"Pythonの文字列のスライス"[0:15:5]
エスケープシーケンス
文字列の作成で,「記述する文字列と同じクォーテーションで囲む場合,直前にバックスラッシュを入れる.」と説明しました.これは,文字列の作成に使われるクォーテーションとして解釈されるのを防ぐためです.このように,エスケープ文字とは,特定の文字の前にバックスラッシュ(\;ブラウザによっては円マーク(¥)と表示されます)を入れ,文字の意味をエスケープして,特定の効果を表現する文字です.よく使うものとしては,改行やタブなどです.ExcelファイルやCSVファイルなどのデータを扱う際に必要となります.
よく使うエスケープシーケンス
- \’:シングルクウォート
- \”:ダブルクウォート
- \n : 改行(LF)
- \t : タブ(TAB)
\’:シングルクウォート
'I\'ll be there.'
\”:ダブルクウォート
"\"ダブルクウォート\"で囲んだ状態で、ダブルクウォートを文字列化できる"
以降は,print()関数を用いることが前提です.print()関数は,文字列から前後のクォーテーションを除いた文字列のみを出力します.というのも,Google colaboratoryでは,エスケープシーケンスがそのまま文字列として出力されるためです.
\n : 改行(LF)
print("4~6月の給料で社会保険料の額が決まるから、\n4~6月に残業せんほうがええで😁")
4~6月に残業せんほうがええで😁
余談ですが,トリプルクォーテーションで複数行の文字列を囲むと,\nを使用することなく,その改行が反映されます.
print('''4~6月の給料で社会保険料の額が決まるから、 4~6月に残業せんほうがええで😁''')
4~6月に残業せんほうがええで😁
print("""Yeh, yeh, yeh, yeh Wow, wow, wow, wow """*4)
Wow, wow, wow, wow
Yeh, yeh, yeh, yeh
Wow, wow, wow, wow
Yeh, yeh, yeh, yeh
Wow, wow, wow, wow
Yeh, yeh, yeh, yeh
Wow, wow, wow, wow
\t : タブ(TAB)
print('ATCG\tATCG\tTATA')
print('配列1\t配列2\t配列3\nATCG\tATCG\tTATA\nUAGC\tUAGC\tAUAU')
ATCG ATCG TATA
UAGC UAGC AUAU
raw文字列:エスケープシーケンスを無効化する
例えば,”C:\User\document\test\name”に存在するファイルをpythonに読み込む場合を考えます.testの直前の\tと,nameの直前の\nがエスケープシーケンスとして解釈されて,正しいパスとなりません.このような場合,rを文字列の先頭に置くと,エスケープシーケンスと解釈されることなく,正しいパスとして解釈されます.
print("C:\User\document\test\name")
print(r"C:\User\document\test\name")
コメント
記述内容が結果に表示されないという意味では,「コメントアウト」も同じような挙動を示します.pythonではハッシュ文字 # 以降に記述した内容は,実行後の結果に表示されません.一般的に,コードの説明などをメモする際に使用します.
123 #コードの意味をメモ.1から3が羅列している.
文字列の扱いについて,基本を学べましたでしょうか?
次は「変数」について学びましょう!
最後まで読んでくださり,ありがとうございます☺️