2017-09-04 45 views
-1

在python腳本中,我需要格式化一個字符串。如何建立日期時間正則表達式來替換?

我已經有了:

em|2017-08-24|PE|TETE|USD||AR|2017-08-25 06:54:40|-98.58 

我在尋找:

em|2017/08/24|PE|TETE|USD||AR|2017/08/25:06:54:40|-98.58 

講究的日期時間替換"/",而不是在中間"-"":",而不是" "

回答

1

re.sub()功能:

import re 

# replacement callback 
def repl(m): 
    sep = m.group(4) # ending separator 
    sep = sep if sep == '|' else ':' 
    return '%s/%s/%s%s' % (m.group(1), m.group(2), m.group(3), sep) 

s = 'em|2017-08-24|PE|TETE|USD||AR|2017-08-25 06:54:40|-98.58' 
result = re.sub(r'(\d{4})-(\d{2})-(\d{2})(\||\s)', repl, s) 

print(result) 

輸出:

em|2017/08/24|PE|TETE|USD||AR|2017/08/25:06:54:40|-98.58 
0

如果字符串中不包含由一個單詞邊界,並沒有其他的空格前面其他短跑,你可以使用:

re.sub(r'\b-', '/', s).replace(' ', ':') 

但是羅馬的答案如果線條不總是適合這些條件,則更合適。