我在想,有没有比我更聪明的人能看出我做错了什么.
我使用正则表达式映射日期格式,并希望将日期转换为"%Y-%m-%d"
当测试"%Y-%m-%d %H:%M:%S"
时,我的日期转换不正确.有没有人看到我做错了什么?我不知道如何处理剩余的未转换数据.
以下是测试代码,供您参考.
from datetime import datetime
import re
import pandas as pd
def conv_date(dte: str) -> datetime: #actul is datetime
acceptable_mappings = {
"\d{4}-\d{2}-\d{2}": "%Y-%m-%d",
"\d{4}-\d{2}-\d{2}\s\d{2}\:\d{2}\:\d{2}": "%Y-%m-%d %H:%M:%S",
}
for regex in acceptable_mappings.keys():
if re.match(regex, dte):
return datetime.strptime(dte, acceptable_mappings[regex])
raise Exception(f"Expected date in one of supported formats, got {dte}")
def full_list_parse(unclean_list: list) -> list:
return [conv_date(dte) for dte in unclean_list]
mock_dict = [
{"name": "xx", "role": "loves only-fans", "date": "2023-07-26 12:46:21"},
{"name": "dz", "role": "legend", "date": "2023-07-26"},
]
df = pd.DataFrame(mock_dict)
if __name__ == "__main__":
print(df)
df['date_clean'] = df['date'].apply(lambda x: conv_date(x))
print(df)
我的结果是:
ValueError: unconverted data remains: 12:46:21
name role date
0 xx loves only-fans 2023-07-26 12:46:21
1 dz legend 2023-07-26
我想要的结果是:
name role date
0 xx loves only-fans 2023-07-26
1 dz legend 2023-07-26