在Django中使用Tweepy从Twitter API提取created_at字段的时间部分
提取Twitter created_at字段中的时间部分
嘿,这个需求在Twitter数据处理里挺常见的,我给你两种实用的思路,适配你在Django+Tweepy的开发场景:
方法一:直接字符串分割(简单高效)
Twitter返回的created_at格式是固定的,按空格拆分后,时间部分刚好是第4个元素(索引为3),直接提取就行:
# 假设你通过Tweepy获取到的推文数据是tweet对象 # 如果tweet.created_at是字符串类型(比如从JSON响应中直接取) created_at_str = tweet.created_at # 或者 response.get("created_at") # 按空格分割字符串,取索引3的元素 time_part = created_at_str.split()[3] # 现在time_part就是你要的"17:21:03",可以直接存到变量里使用 print(time_part)
这种方法的优点是代码简洁、速度快,适合格式完全固定的场景。
方法二:用datetime模块解析(更健壮)
如果之后你可能需要对时间做更多操作(比如时区转换、格式调整),用datetime模块解析会更靠谱,也能避免格式意外变动带来的问题:
from datetime import datetime # 拿到created_at字符串 created_at_str = "Mon Aug 27 17:21:03 +0000 2012" # 按照Twitter的格式解析成datetime对象 dt_obj = datetime.strptime(created_at_str, "%a %b %d %H:%M:%S %z %Y") # 提取时间部分并格式化为HH:MM:SS time_part = dt_obj.strftime("%H:%M:%S") # 同样得到目标时间字符串 print(time_part)
在Django中,如果你要把这个时间存到模型的TimeField字段里,还可以直接用dt_obj.time()获取datetime.time类型的对象,直接赋值给模型字段即可:
# 假设你的模型是Tweet,有个time_posted字段是TimeField from myapp.models import Tweet new_tweet = Tweet( # 其他字段... time_posted=dt_obj.time() ) new_tweet.save()
内容的提问来源于stack exchange,提问作者Adam Dalton
相关产品推荐
相关产品推荐

