Python|开放式基金业务数据交换文件的自动解析
近日,我同事有个开放式基金业务数据文件读取的需求,大概背景是:
人民银行制定了开放式基金业务数据交换协议的标准,规定场外开放式基金、证券公司大集合产品相关业务中机构之间进行数据交换时所采用的数据格式、数据定义和数据内容。
在实际使用中,机构会发送 txt 文件,我同事手工通过第三方软件实现数据内容的读取,之后再转为 excel 才能用于其他场景的使用。这次希望可以自动完成 txt 文件的解析(解析后插入到指定的数据库表中)。
分析过程
1、我同事提供了《中央数据交换平台开放式基金业务数据交换协议V2.2》,可以从中看到 txt 文件内容的格式和解析方法。
2、从我同事提供的阅读器 FFReader 中可以看到软件中所定义的数据字典(感谢作者:幻舞奇影-刘德位,下面简单介绍下这款软件)。
FFReader是一个通用的强大的接口数据文件解析阅读编辑工具,轻松支持百万级别的数据文件解析,目前足以支撑互联网行业日交易量,非常方便证券基金从业运维,运营人员,开发人员分析阅读接口数据,排查系统问题。
目前FFReader发布版本已经内置了如下行业公开接口的解析支持,《中央数据交换平台开放式基金业务数据交换协议》、《中国结算开放式基金新版管理人TXT接口规范》、《开放式基金业务数据交换协议0902》、《基金行业数据集中备份接口规范》、《附件1:中央监管平台机构监管综合信息系统-资产管理业务数据报送接口规范(征求意见稿)》、《集合理财电子合同接口规范-中登电子合同》、《特定客户资产管理业务电子签名合同数据接口规范(试行)-43-44》、《基金管理公司及其子公司特定客户资产管理业务电子签名合同数据接口规范(征求意见稿)-31-32》等接口文件的解析配置,且支持解析文件展示字典翻译等详细信息。
FFReader 官方地址:https://www.ffreader.cn/
FFReader 开源地址:https://gitee.com/cnldw/FinanceFileReader
根据上面的数据交换协议和 FFReader 中的数据字典,我通过 python 写了个类,便于后续其他场景的调用。
类方法介绍
OFDreader.get_txt_lines()
读取 TXT 文档,返回 gbk 格式的内容。OFDreader.get_ofd_items()
根据 TXT 文档内容,返回匹配的数据字典列表。适用于:开放式基金。OFDreader.cut_string_by_bytes()
提供给OFDreader.get_dataList()
使用,用于数据文本的截取,不能对字符串进行 str[m:n] 直接截取的原因是数据包含中文,中文占2字节,需进行字节解码为字符的判断。OFDreader.get_dataList()
用于数据行的解析,返回 json 内容,格式为:{ ‘data’:[{‘name’:xx, ‘ename’:xx, ‘type’:xx, ‘length’:xx, ‘precision’:xx, ‘value’:xx},……]}OFDreader.get_title_info()
用于数据头的解析,返回 json 内容,格式为:{‘filecreator’:xx, ‘filereceiver’:xx, ‘filedate’:xx, ‘No’:xx, ‘filetype’:xx, ‘sender’:xx, ‘receiver’:xx }OFDreader.filetype
文件类型,等于OFDreader.get_ofd_items()[0]
OFDreader.iteam_lists
当前文件所对应的数据字典,等于OFDreader.get_ofd_items()[1]
OFDreader.txt_lines
txt 文档内容,等于OFDreader.get_txt_lines()
源码
类文件 OFDreader.py
1 |
|
调用文件 main.py
1 |
|
商业转载请联系作者获得授权,非商业转载请注明出处。
如果文章对你有帮助,欢迎点击上方按钮打赏作者