未分類

Pythonによるテキストデータからのワード検索

目的

Pythonで無駄な作業を減らして業務効率化を目指しましょう!

今回の内容は、正規表現を使用して、テキストファイルを読み込み、欲しい文章を抽出します。

テキストデータに限らず、ExcelやPDFなどにも応用可能です。

是非、この機会に勉強にしてみて下さい。

今回読み込むテキスト

日時:2022/01/01
名前:田中太郎
内容:Pythonでテキストファイルから欲しいデータを抽出する

抽出するデータ

Pythonでテキストファイルから欲しいデータを抽出する

実行結果

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

open()/ read()/ close()によるファイル読み込み

open():テキストファイルを読み込みモードで開く

read():ファイルの内容を読み込み、

close():開いたファイルを閉じる

# 保存先のパス情報
text_path = 'textの保存先のパス'

# textデータを開く
text_data = open(text_path,'r')
# textデータを読み込む
text_content = text_data.read()
# textデータを閉じる
text_data.close()

# 読み込んだtextデータを表示する
print(text_content)

open()関数について

テキストファイルを読み込む方法として下記の関数を使います。

open(読み込みたいファイル,第2引数)

読み込みモード
open(読み込みたいファイル’, ‘r’):テキストファイルの内容を読み込む

書き込みモード
open(‘読み込みたいファイル’, w):既存のファイルを上書きして最初から書き直す

追記モード
open(‘読み込みたいファイル’, ‘a’):既存のファイルの末尾にテキストを追加する

基本的にOpen()を使用した場合は、Close()で閉じる必要があります。
特に、書き込みモードや追記モードの場合、閉じ忘れたままプログラムが異常終了するとファイルが壊れることがあるので注意して下さい!

# 保存先のパス情報
text_path = 'textの保存先のパス'

# 読み込みモード
text_data_read = open(text_path,'r')
text_data_read.close()
# 書き込みモード
text_data_write = open(text_path,'w')
text_data_write.close()
# 追記モード
text_data_add = open(text_path,'a')
text_data_add.close()

with構文を使用したテキストファイルの読み込み

Open関数とClose関数をセットで書くことは忘れることもあり、
面倒だと感じることがあると思います。
そんな時は、with構文を利用することで、自動的に閉じる処理も実行され、結果的にエラーを防ぐことが可能です。

with open(‘読み込みファイル’, ‘r’) as 任意の名前:

# 保存先のパス情報
text_path = 'textの保存先のパス'

with open(text_path, 'r') as text_data:
    text_content = text_data.read()
    print(text_content)

キーワードより文字列の抽出する

正規表現を使用した文字列の取得

re.compile(r’キーワード(.*))

今回使用したキーワードは’内容:’になります。
また、取得したい文字列は( )に指定した正規表現を従って取り出されます。
正規表現は、「なんでも」に相当する 「.*」を使用ています。

使用した正規表現
. ドット:ワイルドカードといい「改行以外の任意の1文字」
* アスタリスク:「直前のパターンを0回以上繰り返し」

# 正規表現モジュールをインポートする
import re
# re.copile()関数を呼び出しRegexオブジェクトを生成する
keyword_regex = re.compile(r'内容:(.*)')
# Regexオブジェクトのsearch()メソッドに、検索対象に文字列を渡すとMatchオブジェクトを返す
keyword_match = keyword_regex.search(text_content)
# Matchオブジェクトのgroup()メソッドを呼び出し、実際にマッチした文字列を取得する
print(keyword_match.group(1))

一般的な文字集合を表す短縮形

短縮形意味
\d0〜9の数字
\D0〜9の数字以外
\w文字、数字、下線(単語のwordのw)
\W文字、数字、下線以外
\sスペース、タブ、改行(空白spaceのs)
\Sスペース、タブ、改行以外
一般的な文字集合を表す短縮形

基本的な正規表現については、下記の記事を参考にしてみてください。

https://murashun.jp/article/programming/regular-expression.html

テキストファイルから欲しいデータを抽出する関数

最後に、今までの内容をまとめた関数を作成しました。是非、参考にしてみて下さい!

def keyword_match_countent(text_path,regex):
    """
    指定パスに保存されたテキストのデータを読み込み
    正規表現で指定した文字列を取得する
    text_path:パス情報   
    regex:正規表現
    """
    with open(text_path,'r') as text_data:
        text_content = text_data.read()
    keyword_regex = re.compile(r'{}'.format(regex))
    keyword_match = keyword_regex.search(text_content)
    keyword_match_countent = keyword_match.group(1)
    return print(keyword_match_countent)

keyword_match_countent('/Users/Username/Python/text_extraction/Sample_text.txt','内容:(.*)')

おすすめのPython学習方法

ABOUT ME
チェルシー
【プロフィール】  年齢:30代前半  性別:オス 【主な職歴】  メーカー勤務  製品設計開発_メカ設計:7年  開発業務自動化:1年半 元々、メカ設計エンジニアとして、製品設計開発に携わっていました。新しいスキルを身につけたいと独学でPythonを勉強し始め、現在、本業でソフトエンジニアとして働いています。具体的には、Pythonを使った製品評価業務の自動化を推進しています。 また、製品市場データ分析業務など可視化なども実施しています。 【2023年度目標】 1. 副業収入:月5,000円 2. 塩漬けにしていたブログをChatGPTなどを活用して執筆の効率化し、1年半前に開設した本サイトを改善する 3. 定期的に株式投資おすすめ成長株の紹介記事を投稿 4. 自作中の米国成長株の分析ツールのコーディング紹介 5. 株式投資の本で学んだ情報をアウトプットする