パイソン初心者です。あちらこちらでコードを読んで学習しようとしています。PythonでExcelファイルを開くように設計されたプログラムでこれに遭遇しました。この関数は、ord() を使用して、Excel 列の文字ラベル ('Z'、'BB'、または 'CCC') を int に変換するという単純な仕事をします。変換コードのこの部分を見るまで、私はうまく理解していました:
if clen == 1:
return ord(column[0]) - 64
elif clen == 2:
return ((1 + (ord(column[0]) - 65)) * 26) + (ord(column[1]) - 64)
(1 + (ord(column[0]) - 65)と(ord(column[0]) - 64)を再度使用する目的は何ですか。「1 +」は冗長に見えます。これには目的がありますか?
これは完全な機能です:
def column_index_from_string(column, fast=False):
"""Convert a column letter into a column number (e.g. B -> 2)"""
column = column.upper()
clen = len(column)
if not fast and not all('A' <= char <= 'Z' for char in column):
msg = 'Column string must contain only characters A-Z: got %s' % column
raise ColumnStringIndexException(msg)
if clen == 1:
return ord(column[0]) - 64
elif clen == 2:
return ((1 + (ord(column[0]) - 65)) * 26) + (ord(column[1]) - 64)
elif clen == 3:
return ((1 + (ord(column[0]) - 65)) * 676) + ((1 + (ord(column[1]) - 65)) * 26) + (ord(column[2]) - 64)