Regex末尾のカンマを取り除く

投稿者: | 2022-02-08

末尾のカンマを取り除く

列数が異なるCSVをPandasで取得。その後、末尾のカンマを取り除く正規表現

  • 列数が異なるCSVをpandasで呼び込む際、列名を作って強制的に読み込むと
  • 最大列数に不足する行にはカンマが付与される
  • pandas側でfillna()の処理をしても、出力するとカンマは変わらず付与されたままの状態
  • そこで出力後のcsvで以下の文字列処理を行う
import re

# 末尾に連なる複数のカンマ
pattern = ',*$'
str = 'AAA,BBB,CCCC,,,,,,,,'
re.sub(pattern, '', str)
# >> 'AAA,BBB,CCCC'

末尾のカンマを取り除いたCSVを新規作成

import pathlib

p = pathlib.Path('before.csv')

pattern = ',*$'

after_csv = []
with open(p, 'r') as f:
    for l in f:
        l_strip_comma = re.sub(pattern, '', l)
        after_csv.append(l_strip_comma)

with open(p.parent / 'after.csv', 'w') as f:   
    f.writelines(after_csv)