fish_data
数据处理函数包,包括银行卡、身份证等¶
fish_data.CardBin.get_checkcode (card_number_str) |
计算银行卡校验位; |
fish_data.CardBin.check_bankcard (card_number_str) |
检查银行卡校验位是否正确; |
fish_data.CardBin.get_bank_info (bankname) |
银行名称,返回银行代码; |
fish_data.CardBin.get_cardbin_info (bank, …) |
输入银行、借记贷记卡种类,返回有效的卡 bin; |
fish_data.CardBin.get_card_detail (card_num) |
根据银行卡卡号,获取银行名称和银行卡类型 |
fish_data.CardBin.get_bank_name_by_code (…) |
根据银行代号,获取银行名称 |
fish_data.IdCard.get_checkcode (id_number_str) |
计算身份证号码的校验位; |
fish_data.IdCard.check_number (id_number) |
检查身份证号码是否符合校验规则; |
fish_data.IdCard.get_zone_info (area_str[, …]) |
输入包含省份、城市、地区信息的内容,返回地区编号; |
fish_data.IdCard.get_areanote_info (province) |
输入省份代码,返回地区信息; |
fish_data.IdCard.get_province_info () |
获取省份代码 |
fish_data.IdCard.get_number_detail (id_number) |
根据身份证号获取性别、省份、出生年月日信息 |
fish_data.SensitiveMask.get_bankcard_number (data) |
银行卡号掩码表示(前6位后4位显示,其他用掩码*表示) :param: * data(string): 银行卡号明文 :return: * mask_data(string): 银行卡号掩码表示 |
fish_data.SensitiveMask.get_email (data) |
邮箱账号掩码表示(@之前首末位显示,其他用掩码*表示) :param: * data(string): 邮箱账号明文 :return: * mask_data(string): 邮箱账号掩码表示 |
fish_data.SensitiveMask.get_idcard_number (data) |
身份证号掩码表示(前3位后3位显示,其他用掩码*表示) :param: * data(string): 身份证号明文 :return: * mask_data(string): 身份证号掩码表示 |
fish_data.SensitiveMask.get_mobile_number (data) |
手机号掩码表示(前3位后4位显示,其他用掩码*表示) :param: * data(string): 手机号明文 :return: * mask_data(string): 手机号掩码表示 |
fish_data
包含的是一些与数据信息相关的函数,比如银行卡、身份证信息的生成和校验。
在我们进行一些开发测试、功能测试、自动化测试、压力测试等场景下,都需要模拟身份证、银行卡等信息。 fish_data 中的函数就是用在这样的场景。注意,这些函数不会生成真实的身份证和银行卡号。
-
class
fish_data.
CardBin
¶ 校验银行卡号、获取银行卡校验位,获取银行卡、银行信息;
举例如下:
print('--- CardBin demo ---') print('get_checkcode of "439188000699010":', CardBin.get_checkcode('439188000699010')) print('check_bankcard of "4391880006990100":', CardBin.check_number('4391880006990100')) print('get_bank_info of "招商银行":', CardBin.get_bank_info('招商银行') print('get_cardbin_info of "CMB", "DC":', CardBin.get_cardbin_info('CMB', 'DC')) print('---')
执行结果:
--- CardBin demo --- get_checkcode of "439188000699010": 9 check_bankcard of "4391880006990100": False get_bank_info of "招商银行": [('CMB', '招商银行')] get_cardbin_info of "CMB", "DC": [('410062', 'CMB', 'DC', 16), ('468203', 'CMB', 'DC', 16), ... ---
-
classmethod
check_bankcard
(card_number_str)¶ 检查银行卡校验位是否正确;
Param: - card_number_str: (string) 要查询的银行卡号
Returns: 返回结果:(bool) True or False
举例如下:
from fishbase.fish_data import * print('--- fish_data check_bankcard demo ---') # 不能放真的卡信息,有风险 print(CardBin.check_bankcard('4391880006990100')) print('---')
输出结果:
--- fish_data check_bankcard demo --- False ---
-
classmethod
get_bank_info
(bankname)¶ 银行名称,返回银行代码;
Param: - bankname: (string) 要查询的银行 名称,比如 招商银行
Returns: - 返回 银行代号bank , 银行名称 bankname,一条记录为一个 tuple (a, b),然后组成 list 返回
举例如下:
from fishbase.fish_data import * print('--- fish_data get_bank_info demo ---') print(CardBin.get_bank_info('招商银行')) print('---')
输出结果:
--- fish_data get_bank_info demo --- [('CMB', '招商银行')] ---
-
classmethod
get_bank_name_by_code
(bank_code)¶ 根据银行代号,获取银行名称
Param: - bank_code: (string) 银行代号
Returns: - info: (dict) 银行名称和银行卡类型字典
举例如下:
from fishbase.fish_data import * print('--- fish_data get_bank_name_by_code demo ---') result = CardBin.get_bank_name_by_code('ABC') print(result) print('---')
输出结果:
--- fish_data get_bank_name_by_code demo --- 中国农业银行 ---
-
classmethod
get_card_detail
(card_num)¶ 根据银行卡卡号,获取银行名称和银行卡类型
Param: - card_num: (string) 银行卡号
Returns: - flag: (bool) 是否查询成功的标识
- info: (dict) 银行名称和银行卡类型字典
举例如下:
from fishbase.fish_data import * print('--- fish_data get_card_detail demo ---') result = CardBin.get_card_detail('6212836989522229131') print(result) print('---')
输出结果:
--- fish_data get_card_detail demo --- (True, {'bank_name': '中国银行', 'card_type': 'DC'}) ---
-
classmethod
get_cardbin_info
(bank, card_type)¶ 输入银行、借记贷记卡种类,返回有效的卡 bin;
Param: - bank: (string) 要查询的银行代号,比如 ICBC, CMB
- card_type: (string) 银行卡类型,比如 CC 表示信用卡
Returns: - 返回 cardbin, bank, 银行卡类型type, 银行卡长度 length,一条记录为一个 tuple (a, b, c, d),然后组成 list 返回
举例如下:
from fishbase.fish_data import * print('--- fish_data get_cardbin_info demo ---') result = CardBin.get_cardbin_info('CMB', 'DC') print(result) print('---')
输出结果:
--- fish_data get_cardbin_info demo --- [('410062', 'CMB', 'DC', 16), ('468203', 'CMB', 'DC', 16), ... ---
-
classmethod
get_checkcode
(card_number_str)¶ 计算银行卡校验位;
Param: - card_number_str: (string) 要查询的银行卡号
Returns: checkcode: (string) 银行卡的校验位
举例如下:
from fishbase.fish_data import * print('--- fish_data get_checkcode demo ---') # 不能放真的卡信息,有风险 print(CardBin.get_checkcode('439188000699010')) print('---')
输出结果:
--- fish_data get_checkcode demo --- 9 ---
-
classmethod
-
class
fish_data.
IdCard
¶ 校验身份证号、获取身份证校验位,获取随机生成身份证号所需身份代码等函数;
举例如下:
print('--- IdCard demo ---') print('get_checkcode of "32012419870101001":', IdCard.get_checkcode('32012419870101001')[1]) print('check_number of "130522198407316471":', IdCard.check_number('130522198407316471')[0]) print('get_zone_info of "北京市":', IdCard.get_zone_info(area_str='北京市') print('get_areanote_info of "北京(11)":', IdCard.get_areanote_info('11')) print('---')
执行结果:
--- IdCard demo --- get_checkcode of "32012419870101001": 5 check_number of "130522198407316471": True get_zone_info of "北京市": [('110000', '北京市')] get_areanote_info of "北京(11)": ([('110000', '北京市'), ('110100', '北京市市辖区'), ('110101', '北京市东城区'), ... ---
-
classmethod
check_number
(id_number)¶ 检查身份证号码是否符合校验规则;
Param: - id_number: (string) 身份证号,比如 32012419870101001
Returns: - 返回类型 (tuple),当前有一个值,第一个为 flag,以后第二个值会返回具体校验不通过的详细错误
- flag: (bool) 如果身份证号码校验通过,返回 True;如果身份证校验不通过,返回 False
举例如下:
from fishbase.fish_data import * print('--- fish_data check_number demo ---') # id number false id1 = '320124198701010012' print(id1, IdCard.check_number(id1)[0]) # id number true id2 = '130522198407316471' print(id2, IdCard.check_number(id2)[0]) print('---')
输出结果:
--- fish_data check_number demo --- 320124198701010012 False 130522198407316471 True ---
-
classmethod
get_areanote_info
(province)¶ 输入省份代码,返回地区信息;
Param: - province_code: (string) 省份代码 比如:11
Returns: - note_list: (list) 地区信息列表
举例如下:
from fishbase.fish_data import * print('--- fish_data get_areanote_info demo ---') print(IdCard.get_areanote_info('11')) print('---')
输出结果:
--- fish_data get_areanote_info demo --- [('110000', '北京市'), ('110100', '北京市市辖区'), ('110101', '北京市东城区'), ... ---
-
classmethod
get_checkcode
(id_number_str)¶ 计算身份证号码的校验位;
Param: - id_number_str: (string) 身份证号的前17位,比如 3201241987010100
Returns: - 返回类型 (tuple)
- flag: (bool) 如果身份证号格式正确,返回 True;格式错误,返回 False
- checkcode: 计算身份证前17位的校验码
举例如下:
from fishbase.fish_data import * print('--- fish_data get_checkcode demo ---') # id number id1 = '32012419870101001' print(id1, IdCard.get_checkcode(id1)[1]) # id number id2 = '13052219840731647' print(id2, IdCard.get_checkcode(id2)[1]) print('---')
输出结果:
--- fish_data get_checkcode demo --- 32012419870101001 5 13052219840731647 1 ---
-
classmethod
get_number_detail
(id_number)¶ 根据身份证号获取性别、省份、出生年月日信息
Param: - id_number: (string) 要查询的身份证号
Returns: - flag: (bool) 是否查询成功
- info: (dict) 性别信息等
举例如下:
from fishbase.fish_data import * print('--- fish_data get_number_detail demo ---') print(IdCard.get_id_number_detail('130522198407316471')) print('---')
输出结果:
--- fish_data get_number_detail demo ---
(True, {‘province’: ‘130000’, ‘gender’: ‘男’, ‘birth_date’: ‘19840731’}) —
-
classmethod
get_province_info
()¶ 获取省份代码
Param: Returns: - province_list: (list) 省份代码列表
举例如下:
from fishbase.fish_data import * print('--- fish_data get_province_info demo ---') print(IdCard.get_province_info()) print('---')
输出结果:
--- fish_data get_province_info demo ---
[(‘11’,), (‘12’,), (‘13’,), (‘14’,), (‘15’,), … —
-
classmethod
get_zone_info
(area_str, match_type='EXACT', result_type='LIST')¶ 输入包含省份、城市、地区信息的内容,返回地区编号;
Param: - area_str: (string) 要查询的区域,省份、城市、地区信息,比如 北京市
- match_type: (string) 查询匹配模式,默认值 ‘EXACT’,表示精确匹配,可选 ‘FUZZY’,表示模糊查询
- result_type: (string) 返回结果数量类型,默认值 ‘LIST’,表示返回列表,可选 ‘SINGLE_STR’,返回结果的第一个地区编号字符串
Returns: - 返回类型 根据 resule_type 决定返回类型是列表或者单一字符串,列表中包含元组 比如:[(‘110000’, ‘北京市’)],元组中的第一个元素是地区码,
第二个元素是对应的区域内容 结果最多返回 20 个。
举例如下:
from fishbase.fish_data import * print('--- fish_data get_zone_info demo ---') result = IdCard.get_zone_info(area_str='北京市') print(result) # 模糊查询 result = IdCard.get_zone_info(area_str='西安市', match_type='FUZZY') print(result) result0 = [] for i in result: result0.append(i[0]) print('---西安市---') print(len(result0)) print(result0) # 模糊查询, 结果返回设定 single_str result = IdCard.get_zone_info(area_str='西安市', match_type='FUZZY', result_type='SINGLE_STR') print(result) # 模糊查询, 结果返回设定 single_str,西安市 和 西安 的差别 result = IdCard.get_zone_info(area_str='西安', match_type='FUZZY', result_type='SINGLE_STR') print(result) print('---')
输出结果:
--- fish_data get_zone_info demo --- [('110000', '北京市')] 130522198407316471 True ---西安市--- 11 ['610100', '610101', '610102', '610103', '610104', '610111', '610112', '610113', '610114', '610115', '610116'] 610100 220403 ---
-
classmethod
-
class
fish_data.
SensitiveMask
¶ 获取敏感数据的掩码表示
举例如下:
print('--- GetSensitiveMask demo ---') print(SensitiveMask.identity_number('429004199205270758')) print(SensitiveMask.bankcard_number('9558800200136454752')) print(SensitiveMask.mobile_number('13958462541')) print(SensitiveMask.email('xiaolongli@163.com')) print('---')
执行结果:
--- GetSensitiveMask demo --- 429************758 955880*********4752 139****2541 x********i@163.com ---
-
static
get_bankcard_number
(data)¶ 银行卡号掩码表示(前6位后4位显示,其他用掩码*表示) :param:
- data(string): 银行卡号明文
Returns: - mask_data(string): 银行卡号掩码表示
-
static
get_email
(data)¶ 邮箱账号掩码表示(@之前首末位显示,其他用掩码*表示) :param:
- data(string): 邮箱账号明文
Returns: - mask_data(string): 邮箱账号掩码表示
-
static
get_idcard_number
(data)¶ 身份证号掩码表示(前3位后3位显示,其他用掩码*表示) :param:
- data(string): 身份证号明文
Returns: - mask_data(string): 身份证号掩码表示
-
static
get_mobile_number
(data)¶ 手机号掩码表示(前3位后4位显示,其他用掩码*表示) :param:
- data(string): 手机号明文
Returns: - mask_data(string): 手机号掩码表示
-
static