Как я могу разобрать foll. в питона, чтобы извлечь год:Извлечение года из строки в python
'years since 1250-01-01 0:0:0'
Ответ должен быть 1250
Как я могу разобрать foll. в питона, чтобы извлечь год:Извлечение года из строки в python
'years since 1250-01-01 0:0:0'
Ответ должен быть 1250
Есть все виды способов сделать это, вот несколько вариантов:
dateutil
parser в «нечеткой "режим работы:
In [1]: s = 'years since 1250-01-01 0:0:0'
In [2]: from dateutil.parser import parse
In [3]: parse(s, fuzzy=True).year # resulting year would be an integer
Out[3]: 1250
регулярные выражения с группы запись:
In [2]: import re
In [3]: re.search(r"years since (\d{4})", s).group(1)
Out[3]: '1250'
Расщепление «так как», а затем через тир:
In [2]: s.split("since", 1)[1].split("-", 1)[0].strip()
Out[2]: '1250'
или может быть даже расщепление первого тиром и нарезкой первой подстроки:
In [2]: s.split("-", 1)[0][-4:]
Out[2]: '1250'
Последние две части включают в себя более «движущиеся части» и, возможно, в зависимости от возможных вариантов входной строки.
Вы можете использовать регулярное выражение с группой захвата вокруг четырех цифр, а также убедиться, что у вас есть определенный узор вокруг него. Я бы, наверное, искать что-то, что:
4 цифры и захват (\d{4})
дефис -
две цифры \d{2}
дефис -
две цифры\d{2}
Отдает: (\d{4})-\d{2}-\d{2}
Демо:
>>> import re
>>> d = re.findall('(\d{4})-\d{2}-\d{2}', 'years since 1250-01-01 0:0:0')
>>> d
['1250']
>>> d[0]
'1250'
, если вам это нужно, как межд, просто бросить ее как таковую:
>>> int(d[0])
1250
Следующая регулярное выражение должно сделать четырехзначный год, доступный в качестве первой группы захвата:
^.*\(d{4})-\d{2}-\d{2}.*$
Не знал о «нечеткой». Ухоженная. – wim
Аккуратно! Я тоже не знал об этом. – idjaw