我有一个包含以下格式数据的文件:
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'
