【Pythonで変数から文字列を抽出】初心者向けにわかりやすく解説

スポンサードリンク
Python
過去の自分
過去の自分

とある変数に「A0123-456」っていう文字列が入っているんだけど、
ハイフン(-)より前(A0123)を抽出したい…。
Pythonでもそんなことが出来るの?

今の自分
今の自分

できますよ!
では今回は、「Pythonで変数から文字列を抽出する方法」
できるだけわかりやすく解説いたします。
「先頭から」「後ろから」「○文字目以降」など、
さまざまな指定方法を紹介いたしますので、
ぜひ最後まで読んでいってください。

スポンサードリンク

Pythonで変数から文字列を抽出する方法

早速ですが、変数strの中に、「あいうえお-かきくけこ-さしすせそ」という文字列が入っています。

str ='あいうえお-かきくけこ-さしすせそ'

位置や特定の文字を基準に文字列を抽出してみましょう。
変数については下記記事をご参考ください。

下記のとおり、6つのパターンを解説いたします。
(クリックで知りたい見出しにジャンプ)

※解説はわかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

特定の位置以降の数文字を抽出

変数str(あいうえお-かきくけこ-さしすせそ)について、
2文字目から3文字分を抽出してみましょう。
いわゆる「スライス」です。

str ='あいうえお-かきくけこ-さしすせそ'
chars = str[1:4]
print(chars)

<実行結果>
いうえ

【コード2行目の解説】
[]内には、「開始する文字の位置」、「:(コロン)」、「終了する文字の位置」の順で記述します。

位置については間違えやすいのですが、
「0」なら1文字目、「1」なら2文字目という具合で、1文字ずつズレています。
例では[1:4]なので、「2文字目」が開始する文字の位置となります。

またまた間違えやすいのですが、「終了する文字の位置」は指定の文字を含みません。
つまり「4」なら、5文字目を含まない4文字目までとなります。

<テンプレ>
【 抽出後の変数 = 元の変数[開始する文字の位置:終了する文字の位置] 】

開始位置は○文字目-1、終了位置は○文字目そのままと覚えてください。

特定の文字以降の数文字を抽出

変数str(あいうえお-かきくけこ-さしすせそ)について、
「か」以降の3文字分を抽出してみましょう。

str ='あいうえお-かきくけこ-さしすせそ'
start_index = str.index('か')
chars = str[start_index:start_index + 3]
print(chars)

<実行結果>
かきく

【コード2行目の解説】
「か」が何文字目にあるかを特定しています。
「か」が2つ以上ある場合は、最初に出てきた方を認識します。

右辺に、文字列が入った変数に続けて「.index()」を書きます。
()内に基準とする文字を記述してください。

これで変数「start_index」には「か」の文字位置である「6」が代入されました。
※「あ」は0(1文字目)、「い」は1(2文字目)、・・・「か」は6(7文字目)という数え方なのでご注意ください。

【コード3行目の解説】
前項の「特定の位置以降の数文字を抽出」と同じです。
chars = str[6:9]となり、7文字目から9文字目までを抽出する結果となります。

<テンプレ>
【 開始する文字が入った変数 = 元の変数.index(‘開始する文字’) 】
【 抽出後の変数 = 元の変数[開始する文字が入った変数:開始する文字が入った変数 + 文字数] 】

先頭から数文字を抽出

変数str(あいうえお-かきくけこ-さしすせそ)について、
先頭から3文字分(あいう)を抽出してみましょう。

str ='あいうえお-かきくけこ-さしすせそ'
chars = str[:3]
print(chars)

<実行結果>
あいう

特定の位置以降の数文字を抽出」の項で、[]内の指定について解説いたしました。

【 抽出後の変数 = 元の変数[開始する文字の位置:終了する文字の位置] 】

その流れでいけば[0:3]なのですが、先頭が0(つまり1文字目)だった場合は、記述を省略できます。
なので0を省略して[:3]と記述しても、先頭から3文字分を抽出することが可能です。

<テンプレ>
【 抽出後の変数 = 元の変数[:先頭から抽出したい文字数] 】

末尾の3文字を除いた文字列を抽出したい場合は、2行目を下記のように記述してください。

chars = str[:-3]

<実行結果>
あいうえお-かきくけこ-さし

後ろから数文字を抽出

変数str(あいうえお-かきくけこ-さしすせそ)について、
後ろから3文字分(すせそ)を抽出してみましょう。

str ='あいうえお-かきくけこ-さしすせそ'
chars = str[-3:]
print(chars)

<実行結果>
すせそ

[]内にコロン(:)を書いたら、コロンの前に抽出したい文字数を記述します。
後ろから3文字を抽出するため、「-3」と記述してください。

前項までの「開始位置」「終了位置」「省略」など理屈はたくさんあるのですが、
上記のように解釈するのが一番覚えやすいと思います。

<テンプレ>
【 抽出後の変数 = 元の変数[-後ろから抽出したい文字数:] 】

先頭の3文字を除いた文字列を抽出したい場合は、2行目を下記のように記述してください。

chars = str[3:]

<実行結果>
えお-かきくけこ-さしすせそ

特定の文字までを抽出

変数str(あいうえお-かきくけこ-さしすせそ)について、
先頭から「お」までの部分(あいうえお)を抽出してみましょう。

str ='あいうえお-かきくけこ-さしすせそ'
end_index = str.index('お')
chars = str[:end_index + 1]
print(chars)

<実行結果>
あいうえお

【コード2行目の解説】
特定の文字以降の数文字を抽出」の時と同様です。
「お」が何文字目なのかを特定しています。

【コード3行目の解説】
こちらも「特定の文字以降の数文字を抽出」の時と同様です。
[]内は、[0:5]となり、先頭から5文字目までを抽出できます。
コロンの前が「0」ではなく空白なのは、「先頭から数文字を抽出」の時のように「0」は省略できるからです。

<テンプレ>
【 終了する文字が入った変数 = 元の変数.index(‘終了する文字’) 】
【 抽出後の変数 = 元の変数[:終了する文字が入った変数 + 1] 】

特定の文字で囲まれた部分を抽出

変数str(あいうえお-かきくけこ-さしすせそ)について、
ハイフン(-)で囲まれた部分(かきくけこ)を抽出してみましょう。

str = 'あいうえお-かきくけこ-さしすせそ'
first_hyphen_index = str.index('-')
last_hyphen_index = str.rindex('-')
chars = str[first_hyphen_index + 1:last_hyphen_index]
print(chars)

<実行結果>
かきくけこ

【コード2行目の解説】
特定の文字以降の数文字を抽出」の時と同様です。
最初の「-」が何文字目なのかを特定しています。

【コード3行目の解説】
2行目では、最初に出てきた「-」が何文字目なのかを特定しました。
今度の「rindex」最後に出てきた「-」を認識し、位置を特定します。
これで最初と最後の「-」の位置が特定できました。

【コード4行目の解説】
あとはこれまでと同じです。
最初の「-」から最後の「-」までの文字を抽出します。
str[first_hyphen_index+1:last_hyphen_index] は [6:11]となり、「-」で囲まれた「7文字目~11文字目まで」を抽出できます。

<テンプレ>
【 最初の指定文字が入った変数 = 元の変数.index(‘指定文字’) 】
【 最後の指定文字が入った変数 = 元の変数.rindex(‘指定文字’) 】
【 抽出後の変数 = 元の変数[最初の指定文字が入った変数 +1:最後の指定文字が入った変数] 】

「-」が3つ以上あると、下記のようになりますのでご注意ください。

str = 'あいうえお-かきくけこ-さしすせそ-たちつてと'

<実行結果>
かきくけこ-さしすせそ

この場合は、最後の「-」以降を削除してから、「-」で囲まれた部分を抽出しましょう。

str = 'あいうえお-かきくけこ-さしすせそ-たちつてと'
last_hyphen_index = str.rindex('-')
str2 = str[:last_hyphen_index]

first_hyphen_index = str2.index('-')
middle_hyphen_index = str2.rindex('-')
chars = str2[first_hyphen_index + 1:middle_hyphen_index]
print(chars)

<実行結果>
かきくけこ

スポンサードリンク

うまく動作しない時の対処法

見本

エラーが出る

○○ is not defined

今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。

詳しい解説は、下記記事をご参考ください。

その他のエラー

その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。

スポンサードリンク

最後に

見本

Pythonで変数から文字列を抽出する方法を解説いたしました。

間違いやすいところをおさらいしてみましょう。

  • []内の「0」は1文字目、「1」は2文字目のこと(1つずつズレるので注意
  • []内の終了位置を指定する数字は、その文字を含まない(「5」なら4(5文字目)で終了

どうだったっけ?と不安になった場合は、また見に来てください。

当ブログでは、xlwingsやopenpyxlなど、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

挫折せずにPythonを独学で学習する方法は特におすすめです。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました