我有一个文件,其数据具有以下格式:

   1 AA/BB                  0C89JG
   2 ABANO/ANA VICTORIA     F12LFJ
   3 ABBOUDLASTNAME/ABBOUDF DWPTHC
   4 ABDALLAH/SIJAM         H0ZDM9
   5 ABDEL MESSIH/DINA      T0SF8N
   6 ABHISHEK/PRAMANIK      7SLKXV
   7 ABHYANKAR/DHANANJAY    7SM0BV
   8 ABOUSALAMA/FEMKE       LTTRQC
   9 ABRAMOVA/NATALIA       77LCPZ
  10 ABRANTES/JOAO          KXZC7Q
  11 ABRATH/LUC             D5J99J
  12 ABREO/HECTOR           CXDH4G
  13 ABREU/ANDREA           242GRC
  14 ABREU/MARCELO          2436R7
  15 ABREU/VANDA            3HDNQQ
  16 ABTS/NATHALIE          DSK9TN
  17 ABTS/NATHALIE          FZ0LN4


我正在尝试提取例如后6个字符第17行的FZ0LN4
我想出的正则表达式是:

([0-9]{1,5})([A-Z /]) ([0-9A-Z]{6})


但是目前无法正常工作。谁能指出是什么问题?

最佳答案

有几个问题:


您没有匹配某些空格。
[A-Z /]缺少重复运算符。


我将这样重写正则表达式:

In [8]: re.match(r'\s*(\d+)\s*([A-Z /]+?)\s*(\w+)$', '  15 ABREU/VANDA            3HDNQQ').groups()
Out[8]: ('15', 'ABREU/VANDA', '3HDNQQ')


如果只需要最后六个字符,则不需要正则表达式:

In [15]: s = '  15 ABREU/VANDA            3HDNQQ'

In [16]: s[-6:]
Out[16]: '3HDNQQ'

08-16 08:14