田中太郎
エクセルの列番号は”AA” だったり”BC”みたいに表示されています
Pythonで扱いやすいように数字に変換します
やりたいこと
エクセルのセル位置は「アルファベット」+ 「数字」で表されます
pythonでエクセルファイルを読み込んで処理するとき、「AB28」と入力しても何行、何列かはわかりません
そこで、「AB28」を 「28, 28」のように数字に変換するスクリプトを作成しました
スクリプト
スクリプトです
import re
import sys
def split_cell(cell):
"""「AB28」を「AB」と「28」に分けてリストで返します。"""
column = re.search(r"[A-Z]+", cell).span()
line = re.search(r"[0-9]+", cell).span()
return [cell[column[0]:column[1]], cell[line[0]:line[1]]]
def convert_alphabet2num(alphabet):
"""アルファベットと数字に変換します。「AB」なら「28」に変換します。"""
if not re.search(r"\A[A-Z]+\Z", alphabet):
sys.exit("ERROR: '{}' is invalid value".format(alphabet))
num = 0
for cnt, val in enumerate(list(alphabet)):
num += pow(26, len(alphabet) - cnt - 1)*(ord(val) - ord('A') + 1)
return num
def convert_cell2num(cell):
"""「AB28」を数字のリストに変換します。[28, 28]が返ってきます。"""
if not re.search(r"\A[A-Z]+[0-9]+\Z", cell):
sys.exit("ERROR: '{}' is invalid value".format(cell))
return [convert_alphabet_to_num(split_cell(cell)[0]), int(split_cell(cell)[1])]
if __name__ == "__main__":
cell = "AB28"
print(convert_cell2num(cell))
まとめ
エクセルの列番号を数字に変化するスクリプトを作成しました
コメント