Как извлечь «20151101» (как строку) из «Кампания на 01.11.2015»?Извлечение даты из строки в python
Я прочел: Extracting date from a string in Python . Но я зацикливаюсь при преобразовании из объекта Match в строку.
Как извлечь «20151101» (как строку) из «Кампания на 01.11.2015»?Извлечение даты из строки в python
Я прочел: Extracting date from a string in Python . Но я зацикливаюсь при преобразовании из объекта Match в строку.
С небольшими ухищрениями в вышеупомянутом посте, вы можете заставить его работать.
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
чуть более надежное регулярное выражение: .*?\b(\d{2})\.(\d{2})\.(\d{4})\b
(пп/пп/нннны формат с границами слов)
заменить строку: \3\2\1
Здесь является одним из способов, используя 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
И другое, используя 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
Позволяет сойти с ума: D
"".join(reversed(a.split()[-1].split(".")))
С магией списка.
In [15]: ''.join(a.split()[-1].split('.')[::-1])
Out[15]: '20151101'