参考 https://quantkt.com/forumDetail?id=201189
自2025年10月9日起,北交所将为存量股票启用新证券代码,全部切换为“920”开头的独立代码段,共涉及248只股票。
参考对照表 https://www.bse.cn/code_mapping/200025792.html

对于一些在2025.10.9前的数据,如果北交所的代码没有更新,则会和现在的代码对不上,错认为是两个股票,实际本来是8开头的,现在变成920开头,所以北交所前后代码需要进行对齐工作。
对于大部分个股可以看到前三位变成920,后三位不变,如872931->920931,但是直接读到8替换920的方式并不完全,因为也会有首位为4的情况,也会出现后三位变化的情况。
后三位也变化的情况:
比如831396->920496

所以最彻底的方法还是直接写映射表。

参考代码
#encoding:gbkdef create_code_mapping():"""创建新旧代码映射字典"""# 根据提供的数据构建映射 mapping = {'872931': '920931','837023': '920123','835438': '920438','873706': '920706','870656': '920656','831396': '920496','837403': '920403','873806': '920806','873690': '920690','871263': '920363','836961': '920061','833284': '920284','831175': '920375','836547': '920547','873703': '920703','835579': '920579','873570': '920570','832522': '920522','873132': '920132','873679': '920679','873833': '920833','833030': '920130','839493': '920493','873693': '920693','873726': '920026','832786': '920786','832978': '920978','873665': '920665','832469': '920469','836419': '920519','831627': '920627','870976': '920976','872953': '920953','837174': '920274','836504': '920504','837748': '920748','834058': '920058','870726': '920926','832982': '920982','838701': '920701','833751': '920751','873576': '920576','837592': '920592','836717': '920717','832175': '920175','836208': '920208','832651': '920651','833455': '920455','836221': '920221','830779': '920779','430017': '920017','839719': '920719','832471': '920471','837006': '920006','838837': '920837','871478': '920578','836699': '920699','833394': '920394','871694': '920694','830896': '920896','831304': '920304','873593': '920593','872895': '920895','834261': '920261','839792': '920792','830809': '920809','430556': '920556','837663': '920663','833575': '920575','835857': '920057','872541': '920541','830974': '920974','836422': '920422','834770': '920770','430478': '920478','831906': '920906','839273': '920273','832149': '920249','834407': '920407','873167': '920367','832802': '920802','832023': '920023','430425': '920425','873152': '920252','839371': '920371','834950': '920950','872392': '920392','838262': '920262','831195': '920195','831855': '920855','872351': '920351','838227': '920227','873001': '920001','833781': '920781','836247': '920247','872190': '920190','430718': '920718','831526': '920526','873305': '920505','834033': '920033','830879': '920879','836807': '920807','838810': '920810','870508': '920608','833429': '920429','833171': '920571','836957': '920957','833075': '920075','834014': '920014','836414': '920414','870866': '920866','833230': '920230','836942': '920942','430300': '920300','831087': '920087','832110': '920110','831641': '920641','870199': '920199','872374': '920374','832662': '920662','835237': '920237','871634': '920634','872808': '920808','870357': '920357','873339': '920339','833914': '920914','832876': '920876','871753': '920753','430139': '920139','873527': '920527','835892': '920992','430476': '920476','837046': '920046','430685': '920685','838402': '920402','838971': '920971','873122': '920122','835207': '920207','839790': '920790','836270': '920270','836395': '920395','831152': '920152','831834': '920834','835985': '920985','836871': '920871','839725': '920725','834062': '920062','834639': '920639','837821': '920821','838670': '920870','833943': '920943','831278': '920378','430564': '920564','832491': '920491','870299': '920299','873223': '920223','838171': '920271','831167': '920267','833533': '920533','871970': '920970','833580': '920580','873169': '920169','831689': '920689','832419': '920419','835179': '920179','871857': '920857','833346': '920346','870204': '920204','871245': '920245','836720': '920720','871981': '920981','833873': '920873','831832': '920932','839680': '920680','833454': '920454','870436': '920436','836260': '920260','832171': '920171','832145': '920145','837092': '920092','832089': '920089','831305': '920405','838924': '920924','836892': '920892','872925': '920925','836077': '920077','835305': '920305','835174': '920174','831039': '920039','871642': '920642','832566': '920566','430090': '920090','871553': '920553','839946': '920146','832885': '920885','834765': '920765','831768': '920768','837212': '920212','833523': '920523','831726': '920726','832225': '920225','830832': '920832','834599': '920599','832735': '920735','836239': '920239','833427': '920427','838275': '920275','836826': '920826','833509': '920509','837344': '920344','836675': '920675','430510': '920510','831856': '920856','832000': '920000','835670': '920670','838030': '920030','430047': '920047','871396': '920396','830839': '920839','830964': '920964','831961': '920961','830946': '920946','833819': '920819','830799': '920799','839729': '920729','834682': '920682','835640': '920640','835508': '920508','430489': '920489','834475': '920475','831445': '920445','836433': '920433','430418': '920418','834415': '920415','831370': '920370','835368': '920368','832278': '920278','833266': '920266','836263': '920263','837242': '920242','430198': '920198','835185': '920185','835184': '920184','839167': '920167','838163': '920163','836149': '920149','834021': '920021','831010': '920010' }return mappingdef convert_code(old_code):""" 将旧代码转换为新代码 Args: old_code: 输入的旧代码(字符串类型) Returns: 新代码(如果存在映射)或提示信息(如果不存在) """ mapping = create_code_mapping()# 确保输入是字符串并去除可能的空格 old_code = str(old_code).strip()# 查找映射if old_code in mapping:return mapping[old_code]else:return f"未找到代码 {old_code} 的映射关系"# 交互式使用示例def main():print("北交所代码转换工具")print("=" * 30)while True: old_code = input("\n请输入旧代码(输入'q'退出): ").strip()if old_code.lower() == 'q':print("程序已退出")break new_code = convert_code(old_code)print(f"转换结果: {old_code} -> {new_code}")# 批量转换示例def batch_convert(old_codes):""" 批量转换多个代码 Args: old_codes: 旧代码列表 Returns: 转换结果字典 """ mapping = create_code_mapping() results = {}for code in old_codes: code = str(code).strip()if code in mapping: results[code] = mapping[code]else: results[code] = "未找到映射"return resultsif __name__ == "__main__":# 测试示例 test_codes = ['872931', '837023', '835438', '999999']print("批量测试结果:")for old in test_codes: new = convert_code(old)print(f"{old} -> {new}")# 启动交互式界面print("\n" + "=" * 30) main()