Как человек, который писал все на R годами, я все еще не уверен, что лучше всего справлюсь с итерациями / списками в python. В качестве примера, скажем, у меня есть строка:
string = "Imported as of 1 Jan 2020"
И я хочу построить объект даты из строки, где мои шаблоны хранятся в named list
в R или dict
в python следующим образом:
dates_r = list(
day = '[0-9]{1,2}(?=\\s+)',
month = '(\\w+)(?=(\\s)[0-9]{4})',
year = '[0-9]{4}$'
)
dates_py = {
'day':r'[0-9]{1,2}(?=\s+)',
'month':r'(\w+)(?=(\s)[0-9]{4})',
'year':r'[0-9]{4}$'
}
В РИ можно просто :
> dates_out_r <- mapply(stringi::stri_extract_all_regex, pattern = dates_r, str = string, simplify = F)
> dates_out_r
$day
[1] "1"
$month
[1] "Jan"
$year
[1] "2020"
Есть ли способ лучше, чем то, что я сейчас делаю в python?
dates_py = {
'day': r'[0-9]{1,2}(?=\s+)',
'month': r'(\w+)(?=(\s)[0-9]{4})',
'year': r'[0-9]{4}$'
}
dates_out = {}
for key, value in dates_py.items():
rgx = re.compile(value)
dates_out[key] = re.search(rgx, date_str)[0]
dates_out
{'day': '1', 'month': 'February', 'year': '2020'}