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,大阪,埋埋大阪