WebScraper获取网球选手数据:如何将冗余字符的DOB转为可用日期
解决网球选手出生日期格式转换问题
嘿,这个问题我之前帮人处理过类似的,咱们一步步来搞定它!你的字典里dob字段被一堆空白字符(换行、制表符)和括号包裹着,核心就是先清理字符串,再转换成标准日期格式。
步骤1:清理原始出生日期字符串
首先咱们得把那些无用的字符去掉,只留下纯日期内容:
player_data = {'first': 'Roger', 'last': 'Federer', 'dob': '\r\n\t\t\t\t\t\t\t\t\t\t\t(1981.08.08)\r\n\t\t\t\t\t\t\t\t\t\t'} # 第一步:去掉前后所有空白字符(换行、制表符、空格) cleaned_dob = player_data['dob'].strip() # 第二步:去掉首尾的括号 cleaned_dob = cleaned_dob.strip('()') # 现在cleaned_dob的值是:"1981.08.08"
步骤2:转换成标准日期格式
接下来用Python的datetime模块把清理后的字符串转换成可使用的标准格式(比如1981-08-08这种ISO格式,或者直接得到date对象):
from datetime import datetime # 解析字符串为datetime对象 date_object = datetime.strptime(cleaned_dob, '%Y.%m.%d') # 转换成ISO格式的日期字符串(适合存储或展示) standard_dob_str = date_object.isoformat()[:10] # 或者直接得到date类型的对象(适合后续日期计算) standard_dob_date = date_object.date()
步骤3:更新字典
最后把处理好的日期放回你的字典里:
# 用字符串格式更新 player_data['dob'] = standard_dob_str # 或者用date对象更新 # player_data['dob'] = standard_dob_date
简洁版一行代码
如果想省点行数,也可以把清理和转换合并成一行:
from datetime import datetime player_data['dob'] = datetime.strptime(player_data['dob'].strip().strip('()'), '%Y.%m.%d').date()
这样处理完之后,你的字典就会变成:
{'first': 'Roger', 'last': 'Federer', 'dob': datetime.date(1981, 8, 8)} # 或者如果用字符串格式的话:{'first': 'Roger', 'last': 'Federer', 'dob': '1981-08-08'}
内容的提问来源于stack exchange,提问作者DJDiaper
相关产品推荐
相关产品推荐

