我有以下形式的多个字符串:
AM-2019-04-22 06-47-57865BCBFB-9414907A-4450BB24
而且我需要将日期部分替换为其他部分,例如:
AM-2019-07-22 06-47-57865BCBFB-9414907A-4450BB24
如何使用python和regex实现这一目标?
另外,我有多个文本文件包含类似于这样的行:
LocalTime: 21/4/2019 21:48:41
我需要做与上面相同的事情(用其他东西替换月份)。
分析解答
第一个例子:
import re
string = 'AM-2019-07-22 06-47-57865BCBFB-9414907A-4450BB24'
replace = '0'+str(int((re.match('(AM-\d{4}-)(\d{2})',string).group(2)))+2)
re.sub('(AM-\d{4}-)(\d{2})',r'\g<1>'+replace,string) #Replace 07 for 07 +2
输出:
Out[10]: 'AM-2019-09-22 06-47-57865BCBFB-9414907A-4450BB24'
对于第二个:
string2 = 'LocalTime: 21/4/2019 21:48:41'
replace = str(int((re.match(r'(LocalTime: \d{1,2}/)(\d{1,2}).*',string2).group(2)))+2)
re.sub('(Time: \d{2}/)(\d{1,2})',r'\g<1>'+replace,string2) #Replace 4 for 6
输出:
Out[14]: 'LocalTime: 21/6/2019 21:48:41'
如果要限制执行此操作的月份,可以使用if
语句:
if re.match('(AM-\d{4}-)(\d{2})',string).group(2).isin(['04','05','06']:
if re.match(r'(LocalTime: \d{1,2}/)(\d{1,2}).*',string2).group(2).isin(['4','5','6']: