Pythonの「pandas」ライブラリを利用してエクセル内のデータから文字列検索し、該当した文字列の行を読み取りと、データの書き込みまでのプログラムを作成しました。
今回の設定はカラムを指定した検索となっているので、カラム番号を指定します。
前回のCSV→エクセルへ変換した際の記事を参考にしてください。
「pandas」ライブラリを利用したエクセルの文字列読み取りと書き込み
以下では「pandas」ライブラリを利用し、エクセルファイル「excel-data.xlsx」のデータから文字列検索をしたプログラムとなります。
以下のデータは、CentOSで取得したコマンド「df -h」の出力結果をエクセルシートに書き込んだものとなります。
※ find_test00.py
import pandas as pd df = pd.read_excel('excel-data.xlsx') print(df['c00'].str.contains('tmpfs')) print(df[df['c00'].str.contains('tmpfs')])
- 3行目:「excel-data.xlsx」のデータを読み取り
- 5行目:データが入力されている行で「tmpfs」と言う文字列があるのか、ないのかをTrue/Falseで判定
- 6行目:「tmpfs」と言う文字列が該当する行を抽出
※ 実行結果
S C:Python> python find_test00.py 0 False 1 True 2 True 3 True 4 True 5 False 6 False 7 True Name: c00, dtype: bool Unnamed: 0 c00 c01 c02 c03 c04 c05 c06 c07 c08 c09 c10 1 1 devtmpfs 475M 0 475M 0% /dev NaN NaN NaN NaN NaN 2 2 tmpfs 487M 0 487M 0% /dev/shm NaN NaN NaN NaN NaN 3 3 tmpfs 487M 7.7M 479M 2% /run NaN NaN NaN NaN NaN 4 4 tmpfs 487M 0 487M 0% /sys/fs/cgroup NaN NaN NaN NaN NaN 7 7 tmpfs 98M 0 98M 0% /run/user/0 NaN NaN NaN NaN NaN [5 rows x 101 columns] PS C:Python>
上記実行結果により、初めの出力結果は「tmpfs」と言う文字列があるかないかが判断されています。
次の出力結果では、その文字列がある「行」のみが出力されて表示されます。
「pandas」を使ってエクセルの文字列の抽出データを書き込む
次に指定の文字列の行を抽出し、別のエクセルシートにデータを出力するプログラムとなります。
以下では、cisco機器から出力した、「show run」コマンドの出力結果から、「interface」と言う文字列の行のみを抽出し、データを書き込みます。
※ find_test01.py
import pandas as pd #エクセルファイル読み込み df = pd.read_excel('excel-data.xlsx') #カラムc00列の「interfae」の文字列抽出 data = df[df['c00'].str.contains('interface')] #エクセルシートにデータ出力 data.to_excel('excel-data_find.xlsx', encoding='utf-8') print('文字列:切り取り成功')
- 4行目:該当のエクセルシートの読み込み
- 7行目:カラム(列)の「c00」から、「interfae」とう文字列を抽出
- 10行目:抽出したデータを「excel-data_find.xlsx」へ書き込む
※ 実行結果
PS C:Python> python find_test01.py 文字列:切り取り成功 PS C:Python>
抽出した「interface」の文字列を含む行のみがエクセルに書き込まれています。
and条件をつけてデータを抽出
次に複数の条件をつけたい時に「and」を利用したデータの抽出と書き込みの例となります。
import pandas as pd #エクセルファイル読み込み df = pd.read_excel('excel-data.xlsx') #カラムc00列の「interface」と「port」を含む文字列抽出 data = df[df['c00' and 'c01'].str.contains('interface' and 'port')] #エクセルシートにデータ出力 data.to_excel('excel-data_find.xlsx', encoding='utf-8') print('文字列:切り取り成功')
- 7行目:カラムとその列の対象となる文字列を「and」で指定しデータを抽出
このプログラムを実行することにより「interface」と「port」を含む文字列の行のみを抽出してデータを書き込みました。
pandasは文字列の検索、抽出、書き込みまでの一連の機能があるので参考にしてください。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す