Vũ Nam Hưng
Vũ Nam Hưng

Reputation: 55

Extract date from string in python

How can I extract "20151101" (as string) from "Campaign on 01.11.2015"?

I have read this one: Extracting date from a string in Python . But I am getting stuck when converting from Match object to string.

Upvotes: 2

Views: 9484

Answers (5)

Nickil Maveli
Nickil Maveli

Reputation: 29711

With minor tweaks in the aforementioned post, you can get it to work.

import re
from datetime import datetime

text = "Campaign on 01.11.2015"

match = re.search(r'\d{2}.\d{2}.\d{4}', text)
date = datetime.strptime(match.group(), '%d.%m.%Y').date()
print str(date).replace("-", "")
20151101

Upvotes: 9

Rahul K P
Rahul K P

Reputation: 16081

With magic of list.

In [15]: ''.join(a.split()[-1].split('.')[::-1])
Out[15]: '20151101'

Upvotes: 1

Scott Weaver
Scott Weaver

Reputation: 7361

a slightly more robust regex: .*?\b(\d{2})\.(\d{2})\.(\d{4})\b

(nn/nn/nnnn format with word boundaries)

replace string:\3\2\1

demo

Upvotes: 1

Jarek Szymla
Jarek Szymla

Reputation: 79

Lets get crazy : D

       "".join(reversed(a.split()[-1].split(".")))

Upvotes: 0

Robᵩ
Robᵩ

Reputation: 168626

Here is one way, using re.sub():

import re

s = "Campaign on 01.11.2015"

new_s = re.sub(r"Campaign on (\d+)\.(\d+)\.(\d+)", r'\3\2\1', s)

print new_s

And another, using re.match():

import re

s = "Campaign on 01.11.2015"

match = re.match(r"Campaign on (\d+)\.(\d+)\.(\d+)", s)
new_s = match.group(3)+match.group(2)+match.group(1)

print new_s

Upvotes: 1

Related Questions