Chapter 02無料公開

CSVファイルに特定のキーワードを含んだセルのみを抽出して別のエクセルシートに転写する

hello_yogurt
hello_yogurt
2021.11.01に更新

1. CSVファイルを準備する

適当にcsvファイルを作って下さい。
サンプルでsample.csvを作りました。

id name price stock
1 多分そいつ、今ごろ台所でパフェとか食ってるよ。 1,210 0
2 AISFA リュック メンズ リュックサック 5,598 1
3 除湿機 アイリスオーヤマ サーキュレーター衣類乾燥除湿機 16,798 0
4 カレンの台所 (サンクチュアリ出版) 1,540 1

2. CSVファイルから特定のキーワードを含んだセルのみを抽出するpythonファイルを作る

先にそのpythonファイルのコードを示します。

test.py
import csv

keyword = '台所'

l = []
with open('sample.csv') as f:
    reader = csv.reader(f)
    for row in reader:
        for x in row:
            if keyword in x:
                l.append(x)
print(l)

まずpythonファイルでcsvファイルを読み込みます。
やり方の参考ページは以下です。

https://note.nkmk.me/python-csv-reader-writer/

with open('sample.csv') as f:
reader = csv.reader(f)」がそれです。

sample.csvはpythonファイル(test.py)と同じ階層にあるので、pathはファイル名だけでいいです。「reader」にcsvファイルのデータが入ります。

それをfor文で取り出します。
「if keyword in x:」でkeywordを含むセルを取り出し、リストのlに入れてます。
keywordは'台所'なので、lには以下が入ります。

 ['多分そいつ、今ごろ台所でパフェとか食ってるよ。', 'カレンの台所 (サンクチュアリ出版) ']

文字列の抽出は以下が参考ページです。

https://note.nkmk.me/python-list-str-select-replace/

3. 抽出したデータをエクセルファイルに書き出す

pythonのライブラリpandasを使ってエクセルを操作します。

まず、仮想環境を作ります。
この後、ライブラリをインストールするので。

下のコマンドを打ってください。

python3 -m venv myvenv
source myvenv/bin/activate

これで仮想環境ができました。

ターミナルの一番左に(myvenv)と入っていれば、仮想環境に入れてます。

ライブラリをインストールします。

pip3 install openpyxl
pip3 install pandas
pip3 install xlrd

そしたら、コードを書いていきます。

test.py
import csv
import openpyxl
import pandas as pd

keyword = '台所'

l = []
with open('sample.csv') as f:
    reader = csv.reader(f)
    for row in reader:
        for x in row:
            if keyword in x:
                l.append(x)


## excel
pandas_excel = "pandas_1.xlsx"

data = l

df = pd.DataFrame(data)
df.to_excel(pandas_excel, sheet_name="sheet1", index=False, header=False)

このファイルを実行すると、以下のエクセルファイルが新規作成されます。

エクセルの列幅や行の高さを揃えたいなどは、下記を参考にして下さい。

https://yuki.world/pandas-dataframe-excel-styling/

pandasで値を操作するやり方は、下記を参考にして下さい。

https://note.nkmk.me/python-pandas-at-iat-loc-iloc/

以上、大雑把ですが、csvファイルから特定のキーワードを抽出して、excelへの転写まで行いました。