excelの内容を正規表現で置換したかった。
ある列に、数字をカンマで区切った内容を入れてあるのだが、
最後がカンマで終わっている場合、カンマを取りたい。
たとえば、
123, 124, 222, 234
333, 444, 555, 666,
111, 222, 333
みたいな場合、2行目の666, のカンマをとって
333, 444, 555, 666
としたい。
pythonの正規表現は使ったことがあり、
最初は
resut = pattern.match(",$",s1)
という風にしたのだが、なぜかマッチしない。
findallを使ったらマッチした。
置換はもっとスマートな方法があるかもしれないが、
最後の一文字を落とす、という風にした。
rep.py
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"]
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 filename2