Pythonで文字列を区切り文字や改行で分割してリスト化するsplitメソッドの使い方


split

photo credit: DaveBleasdale HERE via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けにPythonプログラミングの基本中の基本をフォルダ作成ツールを作りながら学ぶシリーズです。

前回の記事はコチラ。

Pythonでテキストファイルを開いてデータを読み込む基本中の基本
初心者向けにフォルダを作成するツールを作りながらPythonプログラミングの基本を学んでいます。今回はPythonでテキストファイルを開いてデータを読み込む方法です。全体を文字列で&一行ずつリストで読み込みます。

Pythonでテキストファイルを読み込む方法についてお伝えしました。

さて、今回はそのテキストファイルから取得した文字列を加工していきます。

具体的には、改行コードで文字列を分割してリストに保存する方法です。

splitメソッド、splitlinesメソッドを使いますよ。

では、行ってみましょう!

スポンサーリンク

前回のおさらい

前回はテキストファイルのデータを読み取る方法をお伝えしましたが、2種類ありましたね。

今回は、開いたテキストファイルに対して、readメソッドでデータを読み込むプログラムを見ていきます。

こちらです。

f = open('area.txt')
print(f.read())
f.close()

area.txtの中身は以下のようになっています。

Pythonで開くテキストファイル

このプログラムを実行すると、以下のような結果が出力されました。

Pythonのreadメソッドでテキストファイルの内容を出力

readメソッドは、テキストファイル全体を文字列として取得するメソッドで、出力を見ると改行も含めてそのまま出力されていますね。

このデータを元に、フォルダを作成するためには、それぞれのフォルダ名を切り出すという工程を踏む必要がありますね。

どのようにしたらいいでしょうか。

splitメソッドで文字列を分割してリスト化する

出力結果もちゃんと改行がされているということなので、readメソッドで取得した文字列の中の改行コードを見つけて、そこで区切ってあげればそれぞれのフォルダ名を切り出すことができそうです。

Pythonでは、文字列を任意の区切り文字で分割してリストに格納するsplitメソッドがあります。

以下のように書きます。

文字列.split(sep)

sepに区切り文字(または文字列)を指定します。sepは省略することができ、その場合は空白文字(スペース、タブ、改行)で区切るように動作します。

今回の場合は、改行コードを区切り文字にしたいわけですから、sepは省略してもOKですよね。

では、実際にsplitメソッドを使って、readメソッドで読み込んだ文字列をリストに分割してみましょう。

プログラムはこちらです。

f = open('area.txt')
areas = f.read().split()
print(areas)
f.close()

実行をしてみると、Shellウィンドウに以下のような出力が得られます。

Pythonで文字列を分割してリスト化

なんて便利なんでしょう!

改行コードだけで文字列を分割する方法

ちょっといじわるをしてみましょう。

テキストファイルが以下のような内容だったらどうなりますか?

Pythonで読み込むテキストファイル

splitメソッドでsepを省略した場合の区切り文字は改行だけでなく、スペースやタブも含まれるので、先ほどのプログラムを実行すると以下のように半角スペースの位置でも分割されてしまいます。

Pythonで改行とスペースで分割してリスト化された

このような場合は、区切り文字を改行コードのみにしぼらないといけませんね。

splitメソッドの区切り文字に改行コードを指定する

改行コードのエスケープシーケンスは「\n」ですから、以下のようにsplitメソッドで区切り文字として指定すればOKですね。

areas = f.read().split('\n')

splitlinesメソッドを使って改行で分割する

もう一つの方法として、splitlinesメソッドを使う方法があります。

その名の通り、文字列を改行位置で区切って分割するメソッドです。Python…いくらでも方法がありますね。

書き方はこうです。

文字列.splitlines()

コードは以下のように書けばOKですね。

areas = f.read().splitlines()

元のテキストデータの中に、スペースやタブなどが混在する可能性がぬぐえないのであれば、改行コードによるsplitメソッドか、splitlinesメソッドを使ったほうが確実ですね。

readメソッドでテキストファイルを読み取りフォルダを作成する

以上を踏まえて、テキストファイルから読み取った文字列をもとに、フォルダ名を切り出して、作業フォルダにフォルダを作成するプログラムを作りました。

こちらです。

import os
f = open('area.txt')
areas = f.read().split()
f.close()
for area in areas:
    if os.path.exists(area):
        print('フォルダ ' + area + ' は既に存在しています')
    else:
        os.mkdir(area)

今回解説していない部分については、以下をはじめシリーズの過去記事を参考にして下さいね。

Pythonで条件分岐をする基本中の基本!if~else文の作り方
初心者向けにフォルダ作成ツールを題材としてPythonプログラミングの基本を学んでいます。今回はPythonで条件式による条件分岐をする基本中の基本、if~else文を使う方法をお伝えします。

まとめ

Pythonで文字列を区切り文字で分割するsplitメソッド、また改行コードで分割するsplitlineメソッドの使い方についてお伝えしました。

Python、いちいちシンプルな記述で解決できちゃいますね。素晴らしいです。

次回は、readlinesメソッドで読み取った場合のフォルダ作成プログラムを作っていきます。

Pythonで文字列のスペース・タブ・改行を取り除くstripメソッドの使い方
初心者向けPythonの基本中の基本をフォルダ作成ツールを作りながら学ぶシリーズです。Pythonで簡単に文字列から改行コードを取り除くstripメソッドの使い方です。スペースやタブも除去できますよ。

どうぞお楽しみに!

連載目次:【初心者向けPython】基本の基本を学びながらフォルダ操作

非エンジニアの一般ビジネスマンの初心者向けにPythonでWindowsのファイルやフォルダを操作する簡単便利ツールの作り方を解説しながら、Pythonプログラミングの基本中の基本を学んでいくシリーズです。
  1. Pythonで標準ライブラリのモジュールをインポートして使ってみよう
  2. Pythonでosモジュールのmkdir関数を使ってフォルダを作成する超簡単なプログラム
  3. Pythonプログラミングの基本中の基本!forループによる繰り返しの作り方
  4. Pythonでデータをまとめて取り扱う基本中の基本!リストの使い方とforループ
  5. Pythonで指定したフォルダが存在しているかどうかを調べるos.path.existsの使い方
  6. Pythonで条件分岐をする基本中の基本!if~else文の作り方
  7. Pythonでテキストファイルを開いてデータを読み込む基本中の基本
  8. Pythonで文字列を区切り文字や改行で分割してリスト化するsplitメソッドの使い方
  9. Pythonで文字列のスペース・タブ・改行を取り除くstripメソッドの使い方
  10. Pythonで開いたファイルのクローズを忘れやすい人のためのwith文の使い方
  11. Pythonでcsvファイルからデータを読み込む最初の一歩

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