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
file0 = "./node_file2.csv"
file1 = "./node_file3.csv"
二つの CSV のそれぞれの行を示しているような気もしますが、それぞれの CSV の内容も提示可能でしょうか?
引用元を明示してください。
書籍などではなく、知り合いの方のコードになります。その方にも質問中です。すみません。その上ここでも質問してしまい。
こちらcsvから各idと遷移元idを取り出す結果になっているので、カラムのみ記載させて頂きました。各idカラムのしたに数字でランダムなidが入っています。
もし引用元のサイト(ブログなど)があれば提示してください。
_id_choice()の引数frは何でしょうか? _load_file()の中身も公開出来ますか?
_load_fileを追加しました。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー