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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

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

Q&A

解決済

1回答

486閲覧

Python3のコードの一部で第3引数で分からない箇所があります。

amaturePy

総合スコア131

Python 3.x

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

0グッド

0クリップ

投稿2020/05/04 14:40

編集2020/05/05 01:10

Python3系で書かれているコードでcsvファイルから全行を取得して、処理を加えるコードの中で一部の引数が理解できないところがあり、解説を頂けたら幸いです。
該当箇所では読み込んだcsvファイルの列を指定していると思ったのですが、このように自作関数の引数に読み込んだcsvの列や行をしているという認識であってますでしょうか?

該当箇所 len2 = _id_choice(fr0,f2,6,7) ⇦ここの6、7引数 len3 = _id_choice(fr1,f2,3,4) ⇦3、4の引数
import codecs import csv import re import numpy as np from _function import _load_file, _replace,_id_choice task_items = [0,1,2,3,4] # item number for each task ### input csv files ### file0 = "./node_file2.csv" file1 = "./node_file3.csv" for switch in task_items: ### list of ID and choice ### if switch == 1: f0, f1, fr0, fr1 = _load_file(file0,file1) file2 = "./id_choice.tsv" f2 = codecs.open(file2, "w", "utf-8") f2.write("%s\t%s\r\n" % ("ID_bef/aft","choice")) len2 = _id_choice(fr0,f2,6,7) # depends on csv file len3 = _id_choice(fr1,f2,3,4) # depends on csv file f0.close() f1.close() f2.close() print(file2, len2, len3)
_function.py def _load_file(file0,file1): f0 = open(file0, "r", encoding="utf-8", errors="", newline="") f1 = open(file1, "r", encoding="utf-8", errors="", newline="") fr0 = csv.reader(f0, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) fr1 = csv.reader(f1, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) return f0, f1, fr0, fr1 #################################### def _replace(x): y = x.replace("\n", " ") y = y.replace("\r", " ") y = y.replace("\t", " ") # error when input data have tabs y = y.replace("\v", " ") # vertical tab y = y.replace('"', ' ') return y def _id_choice(fr,f2,ind_row,ind_row2): len0 = 0 for row in fr: if len0>0: a, b = row[0], row[ind_row] b1 = b.split("/") print(row[0]) print(a,b) for x in b1: if x!="": row_new = _replace(row[ind_row2]) row_new1 = row_new.split("??") ### check later! ### if len(row_new1)>1: if len(row_new1)!=len(b1): print("different numbers of items at line %s" % len0) c = row_new1[b1.index(x)] # check later f2.write("%s/%s\t%s\r\n" % (x,a,c)) # check later else: c = row_new1[b1.index(x)] f2.write("%s/%s\t%s\r\n" % (x,a,c)) else: f2.write("%s/%s\t%s\r\n" % (x,a,row_new)) len0 += 1 return len0
csv(どちらのcsvも同じ構成になります) ID/フォルダーID/コンポーネント名/メッセージ/遷移元ID/選択肢/遷移人数/遷移率/CV/OID

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

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

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

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

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

Yasumichi

2020/05/04 14:47

file0 = "./node_file2.csv" file1 = "./node_file3.csv" 二つの CSV のそれぞれの行を示しているような気もしますが、それぞれの CSV の内容も提示可能でしょうか?
meg_

2020/05/04 14:52

引用元を明示してください。
amaturePy

2020/05/04 15:02

書籍などではなく、知り合いの方のコードになります。その方にも質問中です。すみません。その上ここでも質問してしまい。
amaturePy

2020/05/04 15:10

こちらcsvから各idと遷移元idを取り出す結果になっているので、カラムのみ記載させて頂きました。各idカラムのしたに数字でランダムなidが入っています。
meg_

2020/05/04 15:23

もし引用元のサイト(ブログなど)があれば提示してください。
meg_

2020/05/04 15:32

_id_choice()の引数frは何でしょうか? _load_file()の中身も公開出来ますか?
amaturePy

2020/05/05 01:10

_load_fileを追加しました。 よろしくお願いします。
guest

回答1

0

ベストアンサー

該当箇所では読み込んだcsvファイルの列を指定していると思ったのですが、このように自作関数の引数に読み込んだcsvの列や行をしているという認識であってますでしょうか?

Python

1def _id_choice(fr,f2,ind_row,ind_row2): 2 len0 = 0 3 for row in fr:

frは<class '_csv.reader'>ですので、rowは各行のデータを表します。質問のコードではカンマ区切りで0始まりのインデックスで列を指定しています。

投稿2020/05/05 02:49

meg_

総合スコア10760

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

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

amaturePy

2020/05/05 08:54

やはりここで行を指定しているのですね。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問