5.55. msplit 区切り文字による項目分割

区切り文字によって項目を分割する。

パラメータ

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

入力データを指定する。

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

出力データを指定する。

f= : 型=str , 必須

区切り文字で分割するデータの項目名を指定する

a= : 型=str , 必須

新項目を指定する
ここで指定した項目名分分割される。足りない分はNULLとなる

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

新しい区切り文字を指定する。デフォルト値は半角スペース。

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

f= で指定した項目を取り除く

利用例

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

関連メソッド