見出し画像

Lesson6(GoogleColabではじめるPython)-文字列とファイル操作-


前回のLesson5(GoogleColabではじめるPython)-関数とモジュール-に引き続き、今回は変数とデータ型についてのレッスンとなります。実際に手を動かしながらプログラミングを行うことが近道です!ぜひ実践しましょう!

レッスンの構成は以下のとおりです。前回の内容をもとに作成しておりますので、分からない部分に関してはこれまでのレッスンを参照してください。


Lesson1: Pythonとは?GoogleColaboratoryの使い方
Lesson2: 変数とデータ型
Lesson3: 演算子と制御構造
Lesson4: コレクション
Lesson5: 関数とモジュール
Lesson6: 文字列とファイル操作(今回)
Lesson7: クラスとオブジェクト指向


オブジェクトとは

はじめに文字列や値など含めPythonにおける「データを抽象的に表現したもの」をオブジェクトと呼んでいます。

それぞれのオブジェクトにはさまざまな振る舞いができます。そのことをメソッドと呼んでます。

イメージとしては、
Pythonでオブジェクトの1つである文字列を作成した瞬間に、その文字列にはさまざまな機能(大文字にする、文字を連結する等)が備わっている
と思って貰えれば大丈夫です!

文字列

これまで扱ってきたとおり、文字列はダブルクォーテーション(”)やシングルクォーテーション(')で囲んで表現します。

例えば、以下のように書くことができます。

name = "Alice"
message = 'Hello, world!'

文字列には以下のように様々な操作ができます。

文字列の連結
繰り返し
部分的な取り出し
置換
検索
大文字や小文字に変換など

これらの操作を行うためには、文字列に対してメソッドや演算子を使います。

メソッドとは、オブジェクト(ここでは文字列)に対して行える関数のようなものです。メソッドはオブジェクトの後にドット(.)を付けて呼び出します。

演算子とは、オブジェクトに対して行える計算記号のようなものです。演算子はオブジェクトの間に置いて使います。

以下に、文字列に対する代表的なメソッドや演算子の例を示します。


(ハンズオン1)実際に動かしてみましょう!

連結

演算子+で文字列を連結します。

繰り返し

演算子*でその後の数だけ繰り返しします。

スライス(切り取り)

[ ]で文字列の一部を取り出すことができる。[開始位置:終了位置]と指定します。番号はリストと同じ考えです。
ここではf[1:4]とすることによりf[1]からf[4]までの文字列を取り出します。

置き換え

replaceメソッドで文字列の一部を別の文字列に置き換えることができる。
ここではappleという文字列のうち、aをbに置き換えています。

検索

findメソッドで文字列内に指定した文字列が含まれているかどうかを調べることができます。
このメソッドは最初に見つかった文字列の位置を数値で返します(見つからなかった場合は−1を返します)。

文字列の大文字・小文字変換

upperメソッドで文字列を大文字に変換することができ、
lowerメソッドで文字列を小文字に変換することができます。

↓コピー用

# 文字列の連結
a = "Hello!"
b = "Python"
c = a + b
print(c) 

# 文字列の繰り返し
d = "Hi"
e = d * 3
print(e) 

# 文字列のスライス
f = "abcdefg"
g = f[1:4]
print(g) 

# 文字列の置換
h = "apple"
i = h.replace("a", "b") 
print(i) 

# 文字列の検索
j = "banana"
k = j.find("na") 
print(k) # 2 (最初に見つかった位置を返す)

# 文字列の大文字・小文字変換
l = "Hello"
m = l.upper() 
print(m) # HELLO
n = l.lower() 
print(n) # hello

文字列には、他にも様々なメソッドがあります。
例えば、capitalizeメソッドは、文字列の最初の文字を大文字にして、残りの文字を小文字にすることができます。以下に例を示します。

s1 = "hello python"
s2 = s1.capitalize()
print(s2) 

ファイル操作

ファイル操作とは、大きく分けて3つの操作があります。

  • 読み込み

  • 書き込み

  • 削除

Pythonではopen関数を用いてファイル操作を行いますが、今回はwithステートメントを使用してファイル操作を行います。

open関数は、ファイル名とモードを引数に取ります。モードとは、ファイルを読み込むモード(“r”)書き込むモード(“w”)追記するモード(“a”)などのことです。open関数は、ファイルオブジェクトというものを返します。ファイルオブジェクトは、ファイルに対する操作を行うためのメソッドや属性を持っています。
ファイルを開いたら、必ず閉じる必要があります。閉じるには、closeメソッドを使います。しかし、closeメソッドを忘れたり、エラーが発生したりすると、ファイルが閉じられない可能性があります。

withステートメントは、ファイルオブジェクトを自動的に閉じてくれる機能があります。withステートメントの書き方は以下のようになります。

with open(ファイル名, モード) as 変数名:

以下に、withステートメントを使ったファイル操作の例を示します。


(ハンズオン2)実際に動かしてみましょう!

ファイルの準備

最初に読み込むためのファイル(test.txt)を用意します。

ファイルタブをクリックします。

右クリックして「新しいファイル」を選びます(他のフォルダで保存するとデータを読み込むことができなくなるので注意してください)。

test.txtという名前に変更し、Enterキーを押します

これでtest.txtというテキストファイルができました。

test.txtファイルをダブルクリックします。右側にエディタが開きますので、
This is test.txt
と入力します(入力するテキストは何でもOKです)

test.txtをダブルクリックすると右側にエディタが開きます


入力したら ファイルタブ→保存 をクリックして保存します。

ファイルの読み込み

with open("test.txt", "r") as f:

で読み込みができます。なお、"test.txt"がファイル名、"r"が読み込み(read)という意味です。

with open("test.txt", "r") as f: 

の f は読み込んだファイルのオブジェクト(変数)です。
f.<メソッド>」でファイルに対して様々な操作ができます。

以下の例ではf.read()とすることによってファイルの全データを読み込みます。

↓コピー用

# ファイルの読み込み
with open("test.txt", "r") as f: # test.txtというファイルを読み込みモードで開く
    data = f.read() # readメソッドでファイルの内容を全て読み込む
    print(data) # ファイルの内容を表示する


ファイルの書き込み

ファイルへの書き込みは

with open("test.txt", "w") as f:

です。"w"は書き込み(write)をするためのモードです。

実行するとtest.txtファイルが作成されます。ファイルがない場合は新規に作成されます。
すでにファイルがある場合には上書きとなるので注意してください。
ここではf.writeとすることにより「Hello, Python!」というメッセージを書き込んでいます。

test.txtをダブルクリックしてファイルの内容を確認してみましょう。

Hello,Python!というメッセージが確認できます

↓コピー用

# ファイルの書き込み
with open("test.txt", "w") as f: # test.txtというファイルを書き込みモードで開く
    f.write("Hello, Python!") # writeメソッドでファイルに文字列を書き込む

ファイルの書き込み(追記)

上書きではなく追記する場合は

with open("test.txt", "a") as f:

です。"a"は追記するためのモードです。

このプログラムではThis is new lineというメッセージを追記しています。
ファイルを開いて確認してみましょう。

先ほど書き込みしたHello,Python!の次の行にThis is a new line.というメッセージが追記されていることがわかります。

↓コピー用

# ファイルの追記
with open("test.txt", "a") as f: # test.txtというファイルを追記モードで開く
    f.write("\nThis is a new line.") # writeメソッドでファイルの末尾に文字列を追加する


今回のレッスンは以上です。
いかがでしたか?withステートメントに関してはテキストファイル以外にもcsvファイルを扱うこともできます(csvライブラリのインポートが必要)

今回はPythonで文字列やファイルを扱う方法について学びました。
次回は、「クラスとオブジェクト指向」について学びます。




この記事が気に入ったらサポートをしてみませんか?