Python3で書かれたコートの中で一部理解出来ない表現があります。
以下のコードは別ファイルから引数として渡された情報の中から遷移元id(ind_row)と選択肢(ind_row2/テキスト情報)の2種類のカラム情報を処理しています。
その中で以下の一部のコードについて自分の解釈が合っているか確認頂けたら幸いです。
単純なPythonの実力不足だとは思うのですが、少しでも理解して行きたくご質問させて頂きたいです。
①8行目:if x!="":xの要素が空欄出ないなら=存在したら以降の処理を実行 ②11行目:if len(row_new1)>1:row_new1(row_newをsplitした物)の要素が1以上である場合 ③12〜14行目: if len(row_new1)!=len(b1): if len(b1)==1: c = row_new1[0] row_new1(選択肢)とb1(id)の数が一致しない場合でb1(id)の要素数が1つの場合は、 変数cをind_row1の0番目の要素と定義する ④19行目:c = row_new1[b1.index(x)]:←ここが一番理解出なかったです。 前にb1(id)をfor文でxという変数としてループ処理しているので、以下の形になるのかと予想しました。 ---------- key|index←b1.index(x)?? 1 1000 2 2000 3 3000 --------- このrow_new1ごとの上記indexを取得している?
function.py def _id_choice(fr, ind_row, ind_row2): len0 = 0 for row in fr: if len0>0: a, b = row[0], row[ind_row] b1 = b.split("/") 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): if len(b1)==1: c = row_new1[0] ### choose one of choices! ### c = c[:trunc] ### truncation! ### f2.write("%s/%s\t%s\r\n" % (x,a,c)) # check later else: print("different numbers of items at ID: %s(%s)" % (row[0],name)) c = row_new1[b1.index(x)] # check later c = c[:trunc] ### truncation! ### f2.write("%s/%s\t%s\r\n" % (x,a,c)) # check later else: c = row_new1[b1.index(x)] c = c[:trunc] ### truncation! ### f2.write("%s/%s\t%s\r\n" % (x,a,c)) else: c = row_new1[0] c = c[:trunc] ### truncation! ### f2.write("%s/%s\t%s\r\n" % (x,a,c)) len0 += 1 return len0
deal_csv.py if switch == 1: f0, fr0 = _load_file(file0) file2 = "./id_choice.tsv" f2 = codecs.open(file2, "w", "utf-8") f2.write("%s\t%s\r\n" % ("ID_bef/aft","choice")) trunc = 100 # trancation length len2 = _id_choice(fr0,2,3) # depends on csv file f0.close() f2.close()
csvファイルカラム構造 id|message|遷移元id|選択肢| 1 xxxxxx 30/31/32 選択肢1 2 xxxxxx 40/41/42 選択肢2
回答1件
あなたの回答
tips
プレビュー