【python】csvファイルを簡単に操作したい

【python】csvファイルを簡単に操作したい

pythonでCSVファイルを操作するときに毎回コードを書くのが面倒になったのでモジュール化してみました。自作モジュール一式と合わせて公開します。自作モジュールの説明はここでは行っていません。公開したファイルをご参考ください。


今回はmain.py実行で「test.csv」を「rewrite_test.csv」に変更します。

【main.py 実行結果】

【main.py コード】

#################################################
import os
from os import path
import sys
#################################################

###自作関数のフォルダを指定#####################################
m_path = path.join(path.dirname((sys.argv[0])),"py_self_module")
#print(m_path)
x=[]
for x in os.walk(m_path):
    #print(x[0])
    sys.path.append(x[0])
import yomikomi
import hozonn
import csv_to_list
import list_search
import list_to_csv
######↑↑ここまでがimport↑↑##################################


###csvファイルの読み込み################################
r_path = path.join(path.dirname((sys.argv[0])),"test.csv")
csv_data=yomikomi.yomikomi(r_path)
print("読み込んだCSVファイルのデータ")
print(csv_data)
########################################################

print("\r\n")

###csvファイルを扱いやすいlistに加工#########################
indention="\r\n"
sprit=","
list_data=csv_to_list.csv_to_list(csv_data,sprit,indention)
print("扱いやすいlistに加工")
print(list_data)
############################################################

print("\r\n")

###csvファイルのデータを検索############
search_word="A2"
sel_no=list_search.list_search(list_data,search_word)
print("A2の位置")
print(sel_no)
########################################

print("\r\n")

###csvファイルデータの加工############
row=sel_no[0]
column=sel_no[1]
list_data[row][column]="pythonで加工"
print("csvファイルデータの加工")
print(list_data)
######################################

print("\r\n")

###listをcsvファイル向けデータに戻す#############################
indention="\r\n"
sprit=","
rewrite_data=list_to_csv.list_to_csv(list_data,sprit,indention)
print("csvファイル向けにデータを戻す")
print(rewrite_data)
#################################################################

print("\r\n")

###csvファイルを保存#############################################
w_path = path.join(path.dirname((sys.argv[0])),"rewrite_test.csv")
encode_type="Shift_JIS"
hozonn.hozonn(rewrite_data,w_path,encode_type)
print("データ保存完了")
###################################################################

【解説】
<2~4行目>
自作モジュール以外のimport。
<8-13行目>
自作モジュールの入っているフォルダを指定。
これを記載しておくとmain.pyの下層ディレクトにどのように自作モジュールを配置しても読み込める。
<14-18行目>
自作モジュールの読み込み。今回は以下の目的で使用
【yomikomi】csvファイル読み込み
【hozonn】csvファイル保存
【csv_to_list】読み込んだcsvファイルを扱いやすいlistに変換
【list_search】listから特定の文字列の場所を検索する
【list_to_csv】listからcsvファイル形式に変換する
<23-26行目>
test.csvの読み込み。
区切=「,」
改行=「¥n¥r」
<32-36行目>
リスト形式に加工する。
csvの各行を1個のリストとして多重化。
こうしておけば1行目1列だとdata=[0][0]で抽出できる。
<41-45行目>
csvファイルの特定の文字列の位置を検索。
何を入れてもいいが、今回はA2という文字列を検索した。
結果は[1,0]で2行目1列目を示している。
<51-55行目>
検索した行と列を指定して「pythonで加工」という文字列に変更した
<61-65行目>
csv形式に戻すために以下の条件でデータを加工した
区切=「,」
改行=「¥n¥r」
<71-74行目>
csvデータをrewrite_test.csvとして保存する。

【注意点】
保存するときにShift_JISで保存しないと以下のようにエクセル読み込み時に文字化けが発生します。