8.30. fixlen 固定長変換¶
書式1: fixlen(str,長さ,位置,padding文字)
書式2: fixlenw(str,長さ,位置,padding文字)
\(str\) を固定の長さの文字列に変換する。
\(str\) が指定の長さに満たない場合は、
右詰もしくは左詰めで指定した文字を埋め込む。
左右の選択では、「位置」パラメータに "L"
もしくは "R"
を指定する。
埋め込む文字は「padding文字」パラメータに任意の文字を指定する。
また、 \(str\) の長さが、指定した固定長の長さを超えた場合、
右詰の場合は先頭側が、左詰めの場合は末尾側の文字列が削られることに注意する。
マルチバイト文字を対象とした固定長変換については fixlenw
関数を利用する。
利用例¶
importと入力データ(CSV)の準備
1import nysol.mcmd as nm 2 3with open('dat1.csv','w') as f: 4 f.write( 5'''id,str 61,abc 72,123 83, 94,1234567 10''') 11 12with open('dat2.csv','w') as f: 13 f.write( 14'''id,str 151,こんにちは 162,大阪 17''')
基本例
str項目を5文字の固定長文字列に変換する。
5文字に満たない文字列は右詰( "R"
)で "#"
を埋める。
1nm.mcal(c='fixlen($s{str},5,"R","#")', a='rsl', i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# id,str,rsl 4# 1,abc,##abc 5# 2,123,##123 6# 3,,##### 7# 4,1234567,34567
左詰め例
左詰( "L"
)で "#"
を埋める。
1nm.mcal(c='fixlen($s{str},5,"L","#")', a='rsl', i="dat1.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# id,str,rsl 4# 1,abc,abc## 5# 2,123,123## 6# 3,,##### 7# 4,1234567,12345
マルチバイト文字を含む場合
1nm.mcal(c='fixlenw($s{str},4,"R","埋")', a='rsl', i="dat2.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# id,str,rsl 4# 1,こんにちは,んにちは 5# 2,大阪,埋埋大阪