此日期需要正则表达式模式
Need Regex pattern for this Date
我有这样的日期字符串
Date: April 1st, 2015
Date: March 31st, 2015
Date: March 26th, 2015
我需要提取适合 python 日期时间模式的日期。
我将 '%B %d %Y'
作为 python 日期时间模式。
那么我怎样才能将上面的字符串提取为日期时间格式。
正则表达式输出应为:
March 31 2015
August 1 2014
请帮助我构建漂亮的正则表达式模式。
^.*?:\s*|[a-zA-Z]+,
您可以为此使用 re.sub
并替换为 empty string
。参见演示。
https://regex101.com/r/sJ9gM7/42#python
import re
p = re.compile(r'^.*?:\s*|[a-zA-Z]+,', re.MULTILINE | re.IGNORECASE)
test_str = " Date: April 1st, 2015\n Date: March 31st, 2015\n Date: March 26th, 2015"
subst = ""
result = re.sub(p, subst, test_str)
您可以使用 datetime.datetime.strptime
和 strftime
:
>>> d=datetime.datetime.strptime('April 1 2015','%B %d %Y')
datetime.datetime(2015, 4, 1, 0, 0)
>>> d.strftime('%B %d %Y')
'April 01 2015'
尝试这样的事情:
Date:\s*(\w+)\s*(\d+)\w+,\s*(\d+)
这会将日期的每个元素放入后续捕获的参数 (1, 2, 3) 中,可通过 x.group(n) 语法获得。
>>> ' '.join(re.match(r'Date:\s*(\w+)\s*(\d+)\w+,\s*(\d+)', 'Date: April 1st, 2015').groups())
'April 1 2015'
我会怎么做:
date = 'Date: April 1st, 2015'
import re
regex = re.search(
r'Date:\s([A-Z]{1}[a-z]*)\s([0-9]{1,2})[a-z]{2},\s([0-9]{4})',
date,
)
parsed_date = ' '.join(regex.groups())
from datetime import datetime
date_time = datetime.strptime(parsed_date, '%B %d %Y')
print date_time
#output
'2015-04-01 00:00:00'
现在就把它放在一起,然后用日期做点什么;-)
我有这样的日期字符串
Date: April 1st, 2015
Date: March 31st, 2015
Date: March 26th, 2015
我需要提取适合 python 日期时间模式的日期。
我将 '%B %d %Y'
作为 python 日期时间模式。
那么我怎样才能将上面的字符串提取为日期时间格式。 正则表达式输出应为:
March 31 2015
August 1 2014
请帮助我构建漂亮的正则表达式模式。
^.*?:\s*|[a-zA-Z]+,
您可以为此使用 re.sub
并替换为 empty string
。参见演示。
https://regex101.com/r/sJ9gM7/42#python
import re
p = re.compile(r'^.*?:\s*|[a-zA-Z]+,', re.MULTILINE | re.IGNORECASE)
test_str = " Date: April 1st, 2015\n Date: March 31st, 2015\n Date: March 26th, 2015"
subst = ""
result = re.sub(p, subst, test_str)
您可以使用 datetime.datetime.strptime
和 strftime
:
>>> d=datetime.datetime.strptime('April 1 2015','%B %d %Y')
datetime.datetime(2015, 4, 1, 0, 0)
>>> d.strftime('%B %d %Y')
'April 01 2015'
尝试这样的事情:
Date:\s*(\w+)\s*(\d+)\w+,\s*(\d+)
这会将日期的每个元素放入后续捕获的参数 (1, 2, 3) 中,可通过 x.group(n) 语法获得。
>>> ' '.join(re.match(r'Date:\s*(\w+)\s*(\d+)\w+,\s*(\d+)', 'Date: April 1st, 2015').groups())
'April 1 2015'
我会怎么做:
date = 'Date: April 1st, 2015'
import re
regex = re.search(
r'Date:\s([A-Z]{1}[a-z]*)\s([0-9]{1,2})[a-z]{2},\s([0-9]{4})',
date,
)
parsed_date = ' '.join(regex.groups())
from datetime import datetime
date_time = datetime.strptime(parsed_date, '%B %d %Y')
print date_time
#output
'2015-04-01 00:00:00'
现在就把它放在一起,然后用日期做点什么;-)