自动校验excel中的数据是否符合业务要求

背景:最近有个测试项目,系统会生成excel 文件,文件内有一列是加密串,要求生成的这个加密串不能包含数字0,1,大写字母“I”,“O”,想着要是有10000条数据,一个个的看…嗯!这样对眼睛不太友好,所以写个简单的校验脚本

1.excel格式如下图:
在这里插入图片描述
2.思路
·先去excel取出数据,这里继续用openpyxl,因为数据列是固定在第二列,所以列写死是2,行循环下就可以了
·定义一个列表,将取出的数据一个个追加到列表里
·再循环取出列表里的值,对值进行了一个str转换,转换成字符串(备注:这里貌似不用str转,稳妥点我还是保留了)
·已经将单个的数据取出来了,并且是str类型,那么就可以直接用str类型数据的特性,直接判断不需要的字符在不在里面(需求要求不能包含数字0,1,大写字母“I”,“O”)

3.代码如下(总觉得那里需要优化下,但一直没想到)

import openpyxl


class CleckString:

    def get_sheet1(self):
        file_name = "D:\\xxxxx\\xxxx.xlsx"
        data = openpyxl.load_workbook(file_name)
        sheet = data['Sheet1']
        return sheet

    def secret_key_content(self):
        sheet = self.get_sheet1()
        content_list = []
        # row 行
        # col 列
        max_rows = sheet.max_row
        for m_row in range(0, int(max_rows)):
            cell_content = sheet.cell(int(m_row)+1, 2).value
            content_list.append(cell_content)
        return content_list

    def cleck_key_content(self):
        content = self.secret_key_content()
        for i in range(0, len(content)):
            aa = str(content[i])
            # print(aa)
            # print(len(aa))
            if aa.isupper():  # 判断字符串中都是大写
                if len(aa) == 19:
                    if '1' in aa:
                        c1 = "\n卡密中存在数字“1”,与需求不符,卡密号:%s\n第%s条数据" % (content[i], i+1)
                        print(c1)
                    elif 'I' in aa:
                        c2 = "\n卡密中存在大写“I”,与需求不符,卡密号:%s\n第%s条数据" % (content[i], i+1)
                        print(c2)
                    elif '0' in aa:
                        c3 = "\n卡密中存在大写“0”,与需求不符,卡密号:%s\n第%s条数据" % (content[i], i+1)
                        print(c3)
                    elif 'O' in aa:
                        c4 = "\n卡密中存在大写“O”,与需求不符,卡密号:%s\n第%s条数据" % (content[i], i+1)
                        print(c4)
                else:
                    print("卡密不是19位,与需求不符,卡密号:%s\n第%s条数据" % (content[i], i + 1))
            else:
                print("卡密中有小写字母与需求不符,卡密号:%s\n第%s条数据" % (content[i], i+1))
        else:
            print("\n生成的卡密符合需求要求")


if __name__ == '__main__':
    a = CleckString()
    a.cleck_key_content()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值