我在一家银行工作,职责之一是每天要处理两种报文。这些报文每天有成百上千笔,手工处理效率实在低下。因此在这里寻求高手的帮助。
____________________________________________________________________
第一种(MT103):一种汇款报文。有固定的格式。以“{”表示开头,以“}”表示结束。这里指我方汇出的报文。
[Copy to clipboard] [ - ]
CODE:
{1:F01ABCDCNBJAAHX.SN..ISN..}{2:I103MRMDUS33XXXXN}{4:
:20:ABC123456
:23B:CRED
:32A:070123USD30000,00
:50K:/123456789
AAA IMPORT AND EXPORT CO., LTD
34, ZHONGHUA ROAD, SHANGHAI, CHINA
:53A:/222222
ABCDCNBJ
:57A:HSBCHKHH
:59:/33333333
BBB CO.,LTD
:71A:SHA
:70:INVOICE NO.456
:72:/ACC/YOUR KOWLOON BAY BRANCH
-}
说明:
第一行是报头:
1. {1:F01ABCDCNBJAAHX.SN..ISN..} 中的“ABCDCNBJ”是发报行,固定不变。
2. {2:I103MRMDUS33XXXXN} 中的“MRMDUS33XXX”是帐户行,会变化。
从第二行开始往下,都以冒号开头,是报文正文:
3. :20: 发报行业务编号。 长度不定
4. :23B: 固定格式,不用理会
5. :32A: 依次为日期、币种、金额。 日期固定6位数字,币种固定3位字母,金额中的点写为逗号
6. :50K: /后面为汇款人帐号,下面一行为汇款人名称,再下面为汇款人地址
7. :53A: 这一栏內容固定,不需要
8. :57A: 收款人开户银行。8位或11位字母。
有时无SWIFT CODE,使用收款行的全称:
:57D:HSBC BANK, HONG KONG BRANCH
9. :59: /后为收款人帐户,下面为收款人名称,地址(如有)
10. :71A: 费用方式,有三种可能:SHA, BEN, OUR
11. :70: 给收款人的附言,自由格式,最长可有四行
12. :72: 给收款银行的附言,最多四行,第一行需以“/ACC/”开头,以下行以“//”开头
需求:
先把每笔报文放到一个txt文件中,如103.txt,然后用python等工具搜索每笔报文,把每一笔报文的內容按如下栏位添加到excel中,制成一个台帐,以便查询。带星号的是必输项。(括号內以上述报文为例)
帐户行 (MRMDUS33) *
发报行业务编号 (ABC123456) *
日期 (070123) *
币种 (USD) *
金额 (30000,00) *
汇款人 (AAA IMPORT AND EXPORT CO., LTD) *
收款银行 (HSBCHKHH)
收款人帐号 (33333333) *
收款人名称 (BBB CO.,LTD) *
费用方式 (SHA) *
附言 (INVOICE NO.456)
银行附言 (YOUR KOWLOON BAY BRANCH)
如果不是放到excel,而是有其他办法,只要方便以后查询就行。也行。
____________________________________________________________________
第二种(MT999):是一种事务报文,以“{”表示开头,以“}”表示结束。这里指我方收到的国外银行来电。如:
[Copy to clipboard] [ - ]
CODE:
{1:F21ABCDCNBJAAHX5316124118}{4:{177:0701240840}{451:0}}{1:F01ABCDCNBJAAHX5316124118}{2:O9991208070122COMMSGSGAXXX26240330270701221208N}{3:{108:S06E000663 }}{4:
:20:S06E000663
:21:5502100567
:79:PLS BE ADVISED THAT THE A/M BILL FOR
USD2,000,000.00 WILL BE DUE FOR PAYMENT
ON 30 JAN 2007.
.
AT MATURITY, KINDLY REMIT PROCEEDS BY T/T TO OUR
A/C NO. 998877 WITH BANK OF COMMUNICATIONS,
NEW YORK VIA CHIPS UID 368220 UNDER YOUR SWIFT
ADVICE TO US QUOTING OUR REF. NO.
.
REGARDS
TRADE FINANCE
-}{5:{CHK:AD99C609160B}}
说明:
:20: 这一行是发报行的编号
:21: 这一行是收报行的编号
:79: 从这一行一直到倒数第二行是报文正文。
需求:
我所在单位在全省各地都有分支机构,每个机构都有10位的机构编号。前五位为地区代码:
55001 A支行
55002 B支行
55003 C支行
... ...
55021
55022
都以55开头。后五位是业务编号。
对方来的报文中一般会在21栏引用我方的编号。但有时不在21栏,而是出现在正文(79栏)中。
我想做的是,先把所有来报放到一个txt文件中,如999.txt,然后用python等工具搜索每笔报文,如果发现我方机构号的前五位,如55013,则在999.txt所在目录新建一个55013.txt文件,把这笔报文复制过去。如果55013.txt已经存在,则添加这笔报文。最后的结果是,发给每个地区的报文都放到对应的文件中。如,所有给55013机构的报文都放到55013.txt文件中。如果有些报文没有我方编号,则放到一个tmp.txt文件中,由人工处理。之后,用邮件工具把每个文件发到对应机构的信箱中。
____________________________________________________________________
python是一种强大的编程工具,文本处理能力非常强。我只会做简单的小脚本,上面这两个任务做不出。这两个任务犹以第二个急需。
请指点在下如何用python处理?
多谢!