excelの内容を正規表現で置換したかった。
ある列に、数字をカンマで区切った内容を入れてあるのだが、
最後がカンマで終わっている場合、カンマを取りたい。
たとえば、
123, 124, 222, 234
333, 444, 555, 666,
111, 222, 333
みたいな場合、2行目の666, のカンマをとって
333, 444, 555, 666
としたい。
pythonの正規表現は使ったことがあり、
最初は
resut = pattern.match(",$",s1)
という風にしたのだが、なぜかマッチしない。
findallを使ったらマッチした。
置換はもっとスマートな方法があるかもしれないが、
最後の一文字を落とす、という風にした。
########################### import glob import os import openpyxl import re import sys pattern = re.compile('.*,') bookname = sys.argv[1] newbook = sys.argv[2] wb = openpyxl.load_workbook(bookname,data_only=True) ws = wb[u"Sheet1"] #print(ws.cell(row=1, column=1).value) for row in range(1000): c1 = ws.cell(row=row+1, column=9) if c1.value is None: pass else: s1 = str(c1.value) result = re.findall(r",$",s1) if result: print(str(s1[:len(s1)-1])) s2 = str(s1[:len(s1)-1]) c1.value = s2 wb.save(newbook) wb.close ##################################
列は9列目(「I列」)を固定で指定。
ファイル名と保存ファイル名は引数で指定
python rep.py filename1 filenmae2