Skip to main content
 首页 » 编程设计

python之Python 中的正则表达式和格式化

2025年05月04日23落叶无声

我有一个输入数据集如下 -

INPUT = [ 
'ABCD , D.O.B: - Jun/14/1999.', 
'EFGH , DOB; - Jan/10/1998,', 
'IJKL , D-O-B - Jul/15/1985..', 
'MNOP , (DOB)* - Dec/21/1999,', 
'QRST , *DOB* - Apr/01/2000.', 
'UVWX , D O B, - Feb/11/2001 ' 
] 

我希望这是以下格式的输出形式 -

OUTPUT = [ 
('ABCD, Jun/14/1999'), 
('EFGH, Jan/10/1998'), 
('IJKL, Jul/15/1985'), 
('MNOP, Dec/21/1999'), 
('QRST, Apr/1/2000'), 
('UVWX, Feb/11/2001') 
] 

我尝试了以下部分有效的代码,但我无法以所需的输出格式进行格式化 -

import re 
 
INPUT = [ 
'ABCD , D.O.B: - Jun/14/1999.', 
'EFGH , DOB; - Jan/10/1998,', 
'IJKL , D-O-B - Jul/15/1985..', 
'MNOP , (DOB)* - Dec/21/1999,', 
'QRST , *DOB* - Apr/01/2000.', 
'UVWX , D O B, - Feb/11/2001 ' 
] 
 
 
def formatted_def(input): 
    for n in input: 
        t = re.sub('[^a-zA-Z0-9 ]+','',n).split('DOB') 
        print(t) 
 
 
formatted_def(INPUT) 

输出-

['ABCD  ', '  Jun141999'] 
['EFGH  ', '  Jan101998'] 
['IJKL  ', '  Jul151985'] 
['MNOP  ', '  Dec211999'] 
['QRST  ', '  Apr012000'] 
['UVWX  D O B  Feb112001 '] 

任何指针都会非常有帮助。提前致谢!

请您参考如下方法:

import re 
re.findall(r'(\w+)\s+,.*?-\s+([^., ]*)', ' '.join(INPUT)) 
# [('ABCD', 'Jun/14/1999'), ('EFGH', 'Jan/10/1998'), ('IJKL', 'Jul/15/1985'), ('MNOP', 'Dec/21/1999'), ('QRST', 'Apr/01/2000'), ('UVWX', 'Feb/11/2001')]