You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对提取的mm-dd-yyyy格式日期列表进行升序排序?

解决日期列表排序问题

问题原因

  1. .sort()方法的特性:.sort()是原地排序,会直接修改原列表,不会返回排序后的新列表。如果写了类似date = date.sort()的代码,就会得到None。
  2. 日期字符串中的特殊字符:你的日期列表里每个字符串开头都有\u200e(左到右标记),这个隐藏字符会干扰排序逻辑,必须先清理。

解决方案

步骤1:清理日期字符串中的特殊字符

遍历列表,去掉每个日期开头的\u200e:

# 原始日期列表
original_dates = ['\u200e02-09-2021', '\u200e08-03-2022', '\u200e08-03-2022', '\u200e08-03-2022', '\u200e06-09-2021', '\u200e03-23-2021', '\u200e03-23-2021', '\u200e02-10-2021', '\u200e02-10-2021']

# 清理特殊字符
cleaned_dates = [date.strip('\u200e') for date in original_dates]

步骤2:正确排序

有两种方式可选:

  • 原地排序(直接修改原列表):
cleaned_dates.sort()
# 此时 cleaned_dates 即为升序排序后的列表
  • 返回新排序列表(不修改原列表):
sorted_dates = sorted(cleaned_dates)
# sorted_dates 是排序后的新列表,原 cleaned_dates 保持不变

整合到现有代码中

修改你提取日期后的逻辑,同时修正循环遍历的问题:

for i in range(len(links)):
    url = links[i]    
    response = requests.get(url, cookies)
    soup = BeautifulSoup(response.content)
    un = [q.text for q in soup.find_all(class_='lia-link-navigation lia-page-link lia-user-name-link')]
    # 提取日期并同步清理特殊字符
    date = [j.text.strip('\u200e') for j in soup.find_all(class_='local-date')]
    time = [k.text for k in soup.find_all(class_='local-time')] 
    # 对日期列表升序排序
    date.sort()
    # 遍历打印所有日期(修正原循环逻辑)
    for q in range(len(time)):
        print(date[q])

内容的提问来源于stack exchange,提问作者Adithya Jere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:39:50