5.36. mnullto NULL値の置換

f= パラメータで指定した項目について NULL値を v= パラメータで指定した文字列に置換する。

パラメータ

i= : 型=str , 任意(default=標準入力)

入力データを指定する。

o= : 型=str , 任意(default=標準出力)

出力データを指定する。

f= : 型=str , 必須

ここで指定した項目(複数項目指定可)のNULL値が置換される。

v= : 型=str , 任意(default=)

ここで指定した文字列にNULL値を置換する。

p= : 型=bool , 任意(default=False)

前の行の値で置換する。
v= パラメータと同時に指定できない。

k= : 型=str , 任意(default=キーブレイク処理しない)

p オプションを指定した時にのみ意味があり、ここで指定した項目値の単位で置換処理を行なう。

s= : 型=str , 任意(default=)

p オプションを指定した時にのみ意味があり、 k= 項目内での並び順を指定する。

O= : 型=str , 任意(default=)

NULL値以外を置換したい場合は、ここで値を指定する。

A= : 型=bool , 任意(default=False)

このオプションにより、指定した項目を置き換えるのではなく、
A オプションを指定した場合は必ず、
:(コロン)で新項目名を指定する必要がある。例)f=数量:置換後の項目名

共通パラメータ

i= , o= , assert_diffSize= , nfn= , nfno= , x= , q= , tmppath= , precision=

利用例

importと入力データ(CSV)の準備

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''customer,birthday
 6A,19690103
 7B,
 8C,19500501
 9D,
10E,
11''')
12
13with open('dat2.csv','w') as f:
14  f.write(
15'''id,date
16A,19690103
17B,
18C,19500501
19D,
20E,
21''')
22
23with open('dat3.csv','w') as f:
24  f.write(
25'''id,seq,val
26A,1,1
27A,3,2
28A,2,
29B,2,3
30B,1,
31''')

基本例

birthday 項目がNULL値の場合は "no value" に置換する。

1nm.mnullto(f="birthday", v="no value", i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# customer,birthday
4# A,19690103
5# B,no value
6# C,19500501
7# D,no value
8# E,no value

NULL値以外の置換

birthday 項目がNULL値の場合は、 "no value" 値がある場合は "value" 置換し entry という項目名に変更して出力する。

1nm.mnullto(f="birthday:entry", v="no value", O="value", i="dat1.csv", o="rsl2.csv").run()
2### rsl2.csv の内容
3# customer,entry
4# A,value
5# B,no value
6# C,value
7# D,no value
8# E,no value

新しい項目を出力

birthday 項目がNULL値の場合は "no value" 、値がある場合は "value" に置換し entry という項目名で出力する。

1nm.mnullto(f="birthday:entry", v="no value", O="value", A=True, i="dat1.csv", o="rsl3.csv").run()
2### rsl3.csv の内容
3# customer,birthday,entry
4# A,19690103,value
5# B,,no value
6# C,19500501,value
7# D,,no value
8# E,,no value

前行の値に置換

1nm.mnullto(f="val", p=True, i="dat3.csv", o="rsl4.csv").run()
2### rsl4.csv の内容
3# id,seq,val
4# A,1,1
5# A,3,2
6# A,2,2
7# B,2,3
8# B,1,3

キー項目を指定した場合の例

1nm.mnullto(k="id", s="seq", f="val", p=True, i="dat3.csv", o="rsl5.csv").run()
2### rsl5.csv の内容
3# id%0,seq%1,val
4# A,1,1
5# A,2,1
6# A,3,2
7# B,1,
8# B,2,3

関連メソッド