5.8. mchgnum 数値範囲による置換¶
f=
パラメータで指定した項目について、 R=
パラメータで指定する
数値範囲条件と v=
パラメータで指定する置換文字列により、項目の値を置換する。
パラメータ¶
i= : 型=str , 任意(default=標準入力)
入力データを指定する。
o= : 型=str , 任意(default=標準出力)
出力データを指定する。
f= : 型=str , 必須
ここで指定した項目(複数項目指定可)の数値をR=
とv=
パラメータで指定した数値範囲リストおよび置換文字列リストに従って置換する。
R= : 型=str , 必須
置換対象となる数値範囲を指定(複数項目指定可)する(1.1,2.5
: 1.1以上2.5未満)。最小値、最大値としてMIN,MAX
を使うことができる(MIN,2.5
: 2.5未満)。
O= : 型=str , 任意(default=null値)
範囲外文字列R=
パラメータで指定した数値範囲リストのいずれとも合致しない値を置換するときの文字列(指定がなければNULL値となる)を指定する。
F= : 型=bool , 任意(default=False)
範囲外を項目の値として出力R=
パラメータで指定した数値範囲リストのいずれとも合致しない値は、その項目の値のまま出力する。
v= : 型=str , 任意(default=)
R=
パラメータで指定した数値範囲に対応する置換文字列を指定する。R=
で指定した値の個数より1つ少い個数でなければならない。
A= : 型=bool , 任意(default=False)
このオプションにより、指定した項目を置き換えるのではなく、新たに項目が追加される。
r= : 型=bool , 任意(default=False)
R=
パラメータの範囲を'〜より大きく〜以下'として扱う。例えば、1.1_2.5
は「1.1より大きく2.5以下」として扱う。
共通パラメータ¶
i= , o= , assert_diffSize= , assert_nullin= , assert_nullout= , nfn= , nfno= , x= , tmppath= , precision=
利用例¶
importと入力データ(CSV)の準備
1import nysol.mcmd as nm 2 3with open('dat1.csv','w') as f: 4 f.write( 5'''customer,quantity 6A,5 7B,10 8C,15 9D,2 10E,50 11''')
基本例
quantity
項目の値が最小以上10未満を low
、
10以上20未満を middle
、20以上最大未満を high
という文字列に置換する。
1nm.mchgnum(f="quantity", R="MIN,10,20,MAX", v="low,middle,high", i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# customer,quantity 4# A,low 5# B,middle 6# C,middle 7# D,low 8# E,high
パラメータ範囲にイコールをつける例
quantity
項目の値が最小より多く10以下を low
、
10より多く20以下を middle
、20より多く最大以下を high
という文字列に置換する。
1nm.mchgnum(f="quantity", R="MIN,10,20,MAX", v="low,middle,high", r=True, i="dat1.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# customer,quantity 4# A,low 5# B,low 6# C,middle 7# D,low 8# E,high
数値範囲リストに合致しない値を置換
quantity
項目の値が10以上20未満を low
、
20以上30未満を middle
、30以上最大未満を high
、
数量が10より小さい値は out of range
という文字列に置換する。
1nm.mchgnum(f="quantity", R="10,20,30,MAX", v="low,middle,high", O="out of range", i="dat1.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# customer,quantity 4# A,out of range 5# B,low 6# C,low 7# D,out of range 8# E,high
新たな項目の追加
quantity
項目の値が最小以上10未満を low
、
10以上20未満を middle
、20以上最大未満を high
という文字列に置換し
evaluate
という項目名で出力する。
1nm.mchgnum(f="quantity:evaluate", R="MIN,10,20,MAX", v="low,middle,high", A=True, i="dat1.csv", o="rsl4.csv").run() 2### rsl4.csv の内容 3# customer,quantity,evaluate 4# A,5,low 5# B,10,middle 6# C,15,middle 7# D,2,low 8# E,50,high
範囲外を項目の値として出力
quantity
項目の値が10以上20未満を low
、20以上30未満を middle
、
30以上最大未満を high
、数量が10より小さい値は置換しないでそのまま出力する。
1nm.mchgnum(f="quantity", R="10,20,30,MAX", v="low,middle,high", F=True, i="dat1.csv", o="rsl5.csv").run() 2### rsl5.csv の内容 3# customer,quantity 4# A,5 5# B,low 6# C,low 7# D,2 8# E,high
関連メソッド¶
mchgstr 文字列の置換 : 文字列の置換であればこちら。
msed 正規表現による文字列置換 : 正規表現を使った置換が可能。