このブログを検索

2021/07/05

pythonでexcelファイルの正規表現置換をする

 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