如何在Python中将字符串中所有出现的DD / MM / YYYY更改为MM / DD / YYYY格式

时间:2016-11-01 07:15:35

标签: python python-2.7

如何将字符串中所有出现的DD / MM / YYYY更改为MM / DD / YYYY格式。

输入字符串:我于2016年8月9日毕业,并于2017年7月1日加入PHD,然后自2011年10月25日开始

输出字符串:我于2016年8月8日毕业,于07/01/2017加入PHD,然后从2011年10月25日开始

2 个答案:

答案 0 :(得分:2)

您可以使用re.sub查找并替换所有日期:

>>> import re
>>> s = 'I graduated on 09/08/2016 and joined PHD on 01/07/2017 then since 25/10/2011 I works on'
>>> re.sub(r'(\d{2})/(\d{2})/(\d{4})', r'\2/\1/\3', s)
'I graduated on 08/09/2016 and joined PHD on 07/01/2017 then since 10/25/2011 I works on'

上面将捕获所有出现的模式dd/dd/dddd,其中d是三个不同组的数字。然后它将输出一个字符串,其中第一组和第二组已被交换。

答案 1 :(得分:0)

您可以使用re模块和替换功能完成此操作。

import re

# make the re pattern object
# it looks for the following pattern: 2 digits / 2 digits / 4 digits
date_pattern = re.compile(r'\d{2}/\d{2}/\d{4}')

# make the replacement function to be called to replace matches
# takes the match object, splits the date up and swaps the first two elements
def swap_date_arrangement(date_string):
    return_string = date_string.group(0).split('/')
    return_string[0], return_string[1] = return_string[1], return_string[0]
    return '/'.join(return_string)

# test the solution...
input_string = "I graduated on 09/08/2016 and joined PHD on 01/07/2017 then since 25/10/2011 I work on..."

# assign the new string
replaced_string = re.sub(date_pattern, swap_date_arrangement, input_string)

print replaced_string