質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

205閲覧

pythonでファイルごとに使用する関数を変える

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2019/03/26 07:33

編集2019/03/26 08:05

pythonでファイルごとに使用する関数を変える

import glob
glob.glob("directory_path")
で読み込んだ結果が
C:\Users\Desktop\1_ab.csv
C:\Users\Desktop\2_cd.csv
C:\Users\Desktop\3_ef.csv
C:\Users\Desktop\4_gh.csv
C:\Users\Desktop\12_gh.csv

だった場合、csvファイル名に"12"がついているcsvは既に定義している関数def csv12で処理し、
csvファイル名に"1"がついているcsv(12_gh.csvは処理しない)は関数def csv1で処理することを望んでおり、
ファイルパスはglobで出せるものの、それ以降の処理方法が分かりません。
ファイル名に'12'があるかどうかを判定し、あった場合はそのをpandas.read_csvで読み込み、DataFrameとして指定の関数へ引き渡すようなコードを書きたいのです。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

補足情報(FW/ツールのバージョンなど)

python 3.7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2019/03/26 07:38

疑問点が多いので、質問文を整理してまとめ直して頂かないと回答しづらいです。 ・pythonの名前に数字から始まるものは使えませんが? ・他に構文エラーになるファイル名とかもいくらでもあると思いますが? ・関数は先に定義してあるんですか? 動的に生成するんですか? ・その結果を新たに・・・って、どんな結果ができるんですか? ・そもそもなんでそういうことをしたいんですか? 質問文の情報から伝わってきた範囲でも、やろうとしていることはかなり変則的というか、普通はやらないようなことだと思います。
y_waiwai

2019/03/26 07:40

ファイル名に'12'があるかどうかを判定するコードがわからないというはなしでしょうか
退会済みユーザー

退会済みユーザー

2019/03/26 08:04

失礼いたしました。 ご指摘ありがとうございます。 何分初めて使用するので、至らぬ点が多いと思います。申し訳ございません。 質問を更新します。
KojiDoi

2019/03/26 11:07

>質問を更新します。 情報が足りないとhayataka2049さんは指摘しているのですが、その日本語は理解できていますか?
guest

回答1

0

数字ごとに対応する関数が決まっていて、かつ順番通りならば、その名前のリストを作成して、

関数を呼び出すための関数を

def handler(func,*args): return func(*args)

と指定してあげて、

import glob def handler(func,*args): return func(*args) numbers = ['12','51'] a_numbers = ['12a','51a'] # データのリストを取得 lists=glob.glob(r'path/*.csv') i=0 #カウンタ for data in lists:  handler(numbers[i],data) handler(a_numbers[i],data) i = i + 1

こういうことがしたいということでしょうか汗

投稿2019/03/26 07:52

bamboo-nova

総合スコア1408

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問