如何对提取的mm-dd-yyyy格式日期列表进行升序排序?
解决日期列表排序问题
问题原因
.sort()方法的特性:.sort()是原地排序,会直接修改原列表,不会返回排序后的新列表。如果写了类似date = date.sort()的代码,就会得到None。- 日期字符串中的特殊字符:你的日期列表里每个字符串开头都有
\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
相关产品推荐
相关产品推荐

