如何在Python中使用正则表达式替换字符串
我需要使用正则表达式替换字符串中的字符的帮助 输入:如何在Python中使用正则表达式替换字符串,python,Python,我需要使用正则表达式替换字符串中的字符的帮助 输入: s3 = ['March/21/2019' , 'Mar/23/2019'] 期望输出: s3 = ['03/21/2019' , '03/23/2019'] 我尝试了一些方法,但似乎都没有对输入产生任何影响: s3[i]=s3[i]。替换(r'Mar[a-z]*','03') s3[i]=s3[i]。替换(r'(?:Mar[a-z]*),'03') 谁能帮帮我,告诉我我做错了什么 这是有效的 import re s3 = ['March
s3 = ['March/21/2019' , 'Mar/23/2019']
期望输出:
s3 = ['03/21/2019' , '03/23/2019']
我尝试了一些方法,但似乎都没有对输入产生任何影响:
s3[i]=s3[i]。替换(r'Mar[a-z]*','03')
s3[i]=s3[i]。替换(r'(?:Mar[a-z]*),'03')
import re
s3 = ['March/21/2019' , 'Mar/23/2019']
s3 = [re.sub(r'Mar[a-z]*', '03', item) for item in s3]
# ['03/21/2019', '03/23/2019']
当然,您也可以使用for循环来提高可读性
import re
s3 = ['March/21/2019' , 'Mar/23/2019']
for i in range(len(s3)):
s3[i] = re.sub(r'Mar[a-z]*', '03', s3[i])
# ['03/21/2019', '03/23/2019']
如果您只处理日期,请尝试以下操作:
import datetime
s3 = ['March/21/2019' , 'Mar/23/2019']
for i in range(0, len(s3)):
try:
newformat = datetime.datetime.strptime(s3[i], '%B/%d/%Y')
except ValueError:
newformat = datetime.datetime.strptime(s3[i], '%b/%d/%Y')
s3[i] = newformat.strftime('%m/%d/%Y')
s3
现在包含['03/21/2019','03/23/2019']
如果您只处理日期,我认为最好使用datetime
:replace
不使用正则表达式。您需要re.sub(r'Mar[a-z]*','03',s3[i])
如果您想使用正则表达式,您需要通过import re
导入它,并使用它来代替不支持正则表达式模式的str.replace()
。但是,如果您的数据列表是pandas数据帧的一部分,则可以使用df.str.replace()
,这反过来又支持它们。