1. 程式人生 > >根據銀行卡號查詢該銀行卡的簽發銀行

根據銀行卡號查詢該銀行卡的簽發銀行

這是我第一次寫部落格,如果有不對的或者繞彎的還請各位大神指點下,畢竟還是個新手,這個小程式也是我現實中遇到的需求,下面是我的思路;

需求:一批銀行卡號現在儲存在一個txt檔案中,每一行儲存一個銀行卡號,現在要求找出對應的所屬銀行

第一步:國內一般根據銀行卡的開頭來判斷所屬行,所以先找到合適的字典,我選擇excle來儲存字典

第二步:直接編寫程式碼

# -*- coding: utf-8 -*-
# @Time    : 2018/7/12 14:07
# @Author  : xiangchaoming
# @QQ      : 239036082

from openpyxl import *


# 將excle字典轉換成python字典
def bankList():
    workbook = load_workbook("bank.xlsx")
    sheetnames = workbook.get_sheet_names()  # 獲得表單名字
    sheet = workbook.get_sheet_by_name(sheetnames[0])

    # 獲取excle所有內容
    i = 2
    banks = dict()
    while True:
        start = sheet.cell(row=i,column=1).value
        name = sheet.cell(row=i, column=2).value
        if start is not None:
            # print(str(start) + " = " + name)
            banks[str(start)] = name  # 在 Python 3 中使用

        else:
            break
        i = i + 1
    return banks


# 根據銀行卡開頭前10位到前兩位數字判斷所屬銀行
# bankNumber(銀行卡號), bank_list(字典)
def parseBankNumber(bankNumber, bank_list):
    f = open("res.txt", "a")
    if len(bankNumber)>10:
        i = 10
        while i > 1:
            try:
                start = bankNumber[0:i]
                # name = bankList()[start]
                name = bank_list[start]
                f.write(bankNumber + "_" + name + "\n")
                print(bankNumber + "_" + name)
                break
            except Exception as e:
                if i == 2:
                    f.write(bankNumber + "_" + "" + "\n")
                    # print("找不到")

                continue
            finally:
                i = i - 1
    else:
        f.write(bankNumber + "_" + "" + "\n")


if __name__=="__main__":
    bank_list = bankList()
    for line in open("bankNumber.txt"):
        # print(line,) # 後面跟 ',' 將忽略換行符
        # print(line, end='')
        parseBankNumber(line.replace("\n", ""), bank_list)