如何在Python中使用正则表达式替换字符串

时间:2019-04-08 20:07:44

标签: python

我需要使用正则表达式替换字符串中的字符的帮助。

输入:

SELECT * 
FROM `product_specs` 
WHERE itemid = '$id' 
ORDER BY case 
  when FIELD(spec_type, 'value 1', 'value 2') = 0 then 999
  else FIELD(spec_type, 'value 1', 'value 2') end

所需的输出:

s3 = ['March/21/2019' , 'Mar/23/2019']

我已经尝试了一些方法,但是似乎都没有对输入产生任何影响:

  1. s3 = ['03/21/2019' , '03/23/2019']

  2. s3[i] = s3[i].replace(r'Mar[a-z]*', '03')

有人可以帮助我,告诉我我做错了什么。

2 个答案:

答案 0 :(得分:4)

这有效。

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']

答案 1 :(得分:0)

如果仅使用日期,请尝试以下操作:

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']