使用python完成模式匹配BF算法

(1)包括简单的异常处理功能;
(2)用文件实现数据的读取操作;
(3)要求功能完整,无明显逻辑语法错误


def IndexBF(chars, pos, T):
    length = len(T)  # 获取模式串的长度
    length2 = len(chars)  # 获取主串的长度
    tag = False
    if length2 < length:
        print('子串的长度大于主串,无法匹配')
    else:
        i = pos  # 匹配的初始位置
        while (i <= length2 - length):
            iT = i
            j = 0
            tag = False  # 设置匹配的初始为假
            while j < length:  # 子串还有字符未匹配
                if chars[i] == T[j]:  # 判断对应的元素是否相同
                    i += 1
                    j += 1
                else:
                    break
            if j == length:  # 如果子串已经全部匹配完了,则成功,将布尔值修改成真值.
                print('匹配成功,模式串在主串中首次出现的位置为', iT)
                tag = True
                break
            else:
                i = iT + 1
        if tag == False:  # 否则,不做修改,匹配失败。
            print('匹配失败')


f = open('a.txt', 'r', encoding='utf-8')
chars = f.read()  # 定义的主串
f.close()
T = 'fabc'  # 需要匹配的子串
pos = 0  # 匹配的起始位置