我需要从一系列字符串中提取日期,如下所示:
'MIHAI MĂD2Ă3.07.1958'
或者
'CLAUDIU-MIHAI17.12.1999'
怎么做?你知道吗
试过这个:
for index,row in DF.iterrows():
try:
if math.isnan(row['Data_Nasterii']):
match = re.search(r'\d{2}.\d{2}.\d{4}', row['Prenume'])
date = datetime.strptime(match.group(), '%d.%m.%Y').date()
s = datetime.strftime(datetime.strptime(str(date), '%Y-%m-%d'), '%d-%m-%Y')
row['Data_Nasterii'] = s
except TypeError:
pass
可以将
str
访问器与正则表达式一起使用:您需要将
dot (.)
转义为\.
,或者可以在字符类中使用它-“[.]
”。它是正则表达式中的元字符,与任何字符都匹配。如果需要验证更多you can refer this!例如:
r'[0-9]{2}[.][0-9]{2}[.][0-9]{4}' or r'\d{2}\.\d{2}\.\d{4}'
regex中的
.
(点)并不意味着字符点,它意味着“任何东西”,需要转义(\
)才能成为实际的点。除此之外,您的第一组是
\d{2}
,但您的一些日期有个位数的日期。我将使用以下方法:
这意味着至少有一个数字后跟一个点后跟至少一个数字……
如果你在一天中有一些混合性格,你可以尝试以下(低于标准)的解决方案:
这会在你的“一天”中过滤掉最多一个块,虽然不漂亮,但它可以工作(并返回一个字符串)
相关问题 更多 >
编程相关推荐