首页 > 解决方案 > 如何使用 python 在表格中读取 Swift 消息 MT103

问题描述

我需要阅读这样的快速消息 MT103:

{1:F01AAAAGRA0AXXX0057000289} 
{2:O1030919010321BBBBGRA0AXXX00570001710103210920N}
{3:{108:MT103 003 OF 045}{121:c8b66b47-2bd9-48fe-be90-93c2096f27d2}}
{4:
:20:5387354
:23B:CRED
:23E:PHOB/20.527.19.60
:32A:000526USD1101,50
:33B:USD1121,50
:50K:FRANZ HOLZAPFEL GMBH
VIENNA
:52A:BKAUATWW
:59:723491524
C. KLEIN
BLOEMENGRACHT 15
AMSTERDAM
:71A:SHA
:71F:USD10,
:71F:USD10,
:72:/INS/CHASUS33
-}
{5:{MAC:75D138E4}{CHK:DE1B0D71FA96}}

使用python(或R)进入结构化表。

过去有人遇到过同样的问题吗?

感谢您的帮助。

标签: pythonswift-mt

解决方案


你见过这个 PyPi库吗?根据传单,它承诺您可以读取 MT103 文件并将其解析为原生 Python 对象。似乎不会比这更容易?[编辑]

在以下代码示例中,我使用 PyPi ( sudo pip install mt103) 为自己尝试了 mt103 库。然而,我手头没有有效的 mt103 示例文件,所以我得到了一些虚拟数据。这似乎有点工作,除了我的文件没有bank_operation_code。但是请注意,在提供有效但不正确的字符串时,我没有收到错误。该库不检查 mt103 的有效性。它显示在初始化后检查对象时仅发现文本和标题属性为空。

from mt103 import MT103

with open('mtfile', 'r') as myfile:
    mt103=myfile.read().replace('\n', '')

mt_text = MT103(mt103)

print("basic header: {}, bank op code: {}, complete message: {}".format(
    mt_text.basic_header,
    mt_text.text.bank_operation_code,
    mt_text.raw
))

在您拥有对象并且它是有效的之后,您应该能够弄清楚如何将其制成指定的表格。


推荐阅读