使用ord()将字母转换为int(非常基本)

jon*_*t89 5 python excel ord

Python初学者在这里.尝试通过在这里和那里阅读代码来学习.在一个旨在打开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)
Run Code Online (Sandbox Code Playgroud)

是什么目的(1 +(ORD(列[0]) - 65)与只使用(ORD(列[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)
Run Code Online (Sandbox Code Playgroud)

Emi*_*röm 5

不,它没有目的.1+x-65 = x-64甚至在Python中:-)

可能原始开发人员认为理解65比64意味着更容易.但两者都是魔术数字,你最好通过将数字分配给变量来为数字命名.