5.55. msplit 区切り文字による項目分割¶
区切り文字によって項目を分割する。
パラメータ¶
i= : 型=str , 任意(default=標準入力)
入力データを指定する。
o= : 型=str , 任意(default=標準出力)
出力データを指定する。
f= : 型=str , 必須
区切り文字で分割するデータの項目名を指定する
a= : 型=str , 必須
新項目を指定するここで指定した項目名分分割される。足りない分はNULLとなる
delim= : 型=str , 任意(default=)
新しい区切り文字を指定する。デフォルト値は半角スペース。
r= : 型=bool , 任意(default=False)
f=
で指定した項目を取り除く
共通パラメータ¶
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'''id,data 6A,1 10 2 7A,2 20 3 8B,1 15 5 9B,3 10 4 10B,1 20 6 11''') 12 13with open('dat2.csv','w') as f: 14 f.write( 15'''id,data 16A,1 10 2 17A,2 20 3 18B,1 15 5 19B,3 4 20B,1 21''') 22 23with open('dat3.csv','w') as f: 24 f.write( 25'''id,data 26A,1_10_3 27A,2_20_5 28B,1_15_6 29B,3_10_7 30B,1_20_8 31''')
基本例
半角スペースで分割
1nm.msplit(f="data", a="d1,d2,d3", i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# id,data,d1,d2,d3 4# A,1 10 2,1,10,2 5# A,2 20 3,2,20,3 6# B,1 15 5,1,15,5 7# B,3 10 4,3,10,4 8# B,1 20 6,1,20,6
-r利用
r=True
を指定することで、 f=
で項目を削除できる。
1nm.msplit(f="data", a="d1,d2,d3", r=True, i="dat1.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# id,d1,d2,d3 4# A,1,10,2 5# A,2,20,3 6# B,1,15,5 7# B,3,10,4 8# B,1,20,6
分割数不一致
a=
で指定した項目数よりも分割できる項目数が少ない場合は、NULLが追加され、
多い場合、先頭から指定した分割数まで出力する
1nm.msplit(f="data", a="d1,d2", i="dat2.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# id,data,d1,d2 4# A,1 10 2,1,10 5# A,2 20 3,2,20 6# B,1 15 5,1,15 7# B,3 4,3,4 8# B,1,1,
delim指定
delim=
を使用して半角スペース以外の文字で分割する
1nm.msplit(f="data", a="d1,d2,d3", delim="_", i="dat3.csv", o="rsl4.csv").run() 2### rsl4.csv の内容 3# id,data,d1,d2,d3 4# A,1_10_3,1,10,3 5# A,2_20_5,2,20,5 6# B,1_15_6,1,15,6 7# B,3_10_7,3,10,7 8# B,1_20_8,1,20,8