5章では、Pythonにおける文字列の扱いと操作について解説します。
「文字数を数える」、「文字列から指定した位置(インデックス)にある文字を取り出す」、「文字列の結合」の方法を解説しています。
本連載講座【Python 基礎編】では、「プログラミング未経験の方」が挫折せずにPythonの基礎を学ぶことができます。
プログラミングを始めて学ぶ方が理解できるよう、丁寧に解説しています。
さらに、学んだ内容を身につけるための演習問題も用意しています。
・Pythonを挫折せずに学習したい
・無料でPythonを確実に習得したい
このような考えを持っている方は、Tech Teacherが運営する【Python 基礎編】を用いて、Pythonの学習をすることをお勧めします!
<目次>
1章:Pythonの特徴・概要
2章:環境構築と基本操作
3章:出力関数print()
4章:数値の型(int、float)と算術演算子
5章:文字列の操作(len・抽出・結合)
6章:真偽値(True・False)・論理演算(AND、OR、NOT)・比較演算子
7章:変数
8章:if文による条件分岐
9章:リストと辞書
10章:for・whileによる繰り返し(ループ)処理
11章:関数の作り方・使い方
12章:クラスとモジュール
文字列の扱い
文字列の復習
3章でも説明しましたが、Pythonでは数値と文字列が区別されます。
Pythonにおいて文字列はシングルクォーテーション(‘)またはダブルクォーテーション(“)で両端を囲む必要があります。
ここまでが3章の復習です。
では、文字列についてもう少し詳しく学習していきましょう。
文字列の型
Pythonでは、文字列はstr型(stringの略)として扱われます。type()で確認してみましょう。
print(type('Hello, world!'))
<class 'str'>
また、文字列と数値を相互変換することもでき、str()で数値を文字列に、int()またはfloat()で文字列を数値に変換できます。
print(type(str(123)))
print(type(int('123')))
print(type(float('123')))
<class 'str'>
<class 'int'>
<class 'float'>
文字列の長さ
文字列の長さはlen()で取得できます。
print(len('あいうえお'))
print(len('a b c '))
print(len(''))
print(type(''))
5
6
0
<class 'str'>
プログラムから分かる通り、半角の空白も1文字として数えられます。(全角の空白は使わないようにしましょう。)
また、クォーテーションの間に何も書かない場合、長さ0の文字列として扱われます。
これはprint関数で改行されるのを回避するために使われたりします。
# 以下のように書くと、print関数で改行が行われない
print('改行', end = '')
print('されない')
改行されない
文字列の操作
文字列とインデックス
文字列の各文字には順番に番号が振られており、その番号をインデックスと呼びます。
インデックスは左の文字から順に振られ、0から始まります。
[]を用いて文字列のインデックスを指定することで、各文字を取り出すことができます。
print('abcde'[0])
print('abcde'[2])
print('abcde'[4])
a
c
e
〇n番目の文字を取得するにはインデックスとしてn-1を指定する必要があります。(先頭のインデックスが0のため)
〇文字列の長さ以上のインデックスを指定するとエラーになります。
また、インデックスとして負数を指定することもできます。
この場合、末尾のインデックスが-1となり、末尾から先頭にかけて-1, -2, -3…と続いていきます。
print('abcde'[-1])
print('abcde'[-4])
e
b
インデックスについてまとめると、以下の表のようになります。
文字列のスライス
ここでは文字列の一部分だけを取り出す方法を解説します。
文字列の一部を取り出すには、スライスという機能を使います。
# 3~5文字目までを取得
print('abcdefg'[2:5])
# 5文字目を取得
print('abcdefg'[4:5])
# 2文字目から末尾まで取得
print('abcdefg'[1:])
# 先頭から4文字目までを取得
print('abcdefg'[:4])
cde
e
bcdefg
abcd
文字列のスライスでは、取得したい部分の最初のインデックスと、最後のインデックスに1を加えた値を指定します。(ややこしいですが、間違えないようにしましょう)
例えば[3:8]を指定すると、文字列の先頭から4文字目(インデックスは3)~8文字目(インデックスは7)までが取り出せます。
数字を省略すると、先頭もしくは末尾まで取り出されます。
また、負数を指定して末尾からのインデックスで取り出すことができます。
# 末尾から5文字目~末尾から2文字目までを取り出す
# [-1:-5]としないように注意
print('abcdedefg'[-5:-1])
edef
さらに、3番目の値を指定することで、何個かおきに文字を取り出すことができます。
# 3文字目から7文字目を1文字おきに取り出す
print('abcdefg'[2:7:2])
ceg
3番目の値に負数を指定すると、逆向きに取り出せます。
# 7文字目から4文字目に向かって取り出す
print('abcdefg'[7:2:-1])
# 7文字目から4文字目に向かって1文字おきに取り出す
print('abcdefg'[7:2:-2])
gfed
ge
スライスの仕方が複雑になるとインデックスの扱いが非常に分かりづらくなるので、間違えないように注意しましょう。
文字列の結合
文字列どうしは、『+』演算子で結合することができます。
ただし、文字列と数値は結合できないので注意しましょう。
print('Hello, ' + 'world' + '!')
print('私の年齢は' + str(30) + '歳です。')
Hello, world!
私の年齢は30歳です。
また、『*』演算子を用いると同じ文字列を複数回繰り返すような文字列を作ることができます。
print('abc' * 3)
abcabcabc
『Tech Teacher』3つの魅力
魅力1. オーダーメイドのカリキュラム
『Tech Teacher』では、決められたカリキュラムがなくオーダーメイドでカリキュラムを組んでいます。「質問だけしたい」「相談相手が欲しい」等のご要望も実現できます。
魅力2. 担当教師によるマンツーマン指導
Tech Teacherでは、完全マンツーマン指導で目標達成までサポートします。
東京大学を始めとする難関大学の理系学生・院生・博士の教師がが1対1で、丁寧に指導しています。
そのため、理解できない箇所は何度も分かるまで説明を受けることができます。
魅力3. 3,960円/30分で必要な分だけ受講
Tech Teacherでは、授業を受けた分だけ後払いの「従量課金制」を採用しているので、必要な分だけ授業を受講することができます。また、初期費用は入会金22,000円のみです。一般的なプログラミングスクールとは異なり、多額な初期費用がかからないため、気軽に学習を始めることができます。
まとめ
・魅力1. 担当教師によるマンツーマン指導
・魅力2. オーダーメイドのカリキュラム
・魅力3. 3,960円/30分で必要な分だけ受講
質問のみのお問い合わせも受け付けております。
5章の練習問題
以下の練習問題を解いてみましょう。
練習問題
問1. 以下のプログラムをそれぞれ書いてください。
(1) int型の数値256
をstr型に変換し、出力するプログラム
(2) 文字列'12345'
をfloat型に変換し、出力するプログラム
(3) 文字列'Hello, world!'
の長さを取得し、出力するプログラム
問2. 以下のプログラムをそれぞれ書いてください。
(1) 文字列 'abcde'
の先頭から3文字目を取り出すプログラム
(2) 文字列 'Hello, world!'
の最初の5文字をスライスして出力するプログラム
(3) 文字列 'Python Programming'
の3番目から6番目までの文字をスライスして出力するプログラム
(4) 文字列 'Python'
の最後の3文字をスライスして出力するプログラム
(5) 文字列 'abcdefg'
を逆順にして出力するプログラム
解答
# (1)
print(str(256))
# (2)
print(float('12345'))
# (3)
print(len('Hello, world!'))
256
12345.0
13
# (1)
print('abcde'[2])
# (2)
print('Hello, world!'[:5])
# (3)
print('Python Programming'[2:6])
# (4)
print('Python'[-3:])
# [3:]でも可
# (5)
print('abcdefg'[::-1])
c
Hello
thon
hon
gfedcba
次のページへ