我有几段客户数据。每个段落均以dd.mm.yyyy hh:mm:ss开头。我需要根据其中包含的日期时间戳对这些段落进行排序
我需要为此使用python。我在python上尝试过正则表达式,但没有得到输出
代码:
*sep2 = '([0-3]?\d)[- \/.](0\d|1[0-2])[- \/.]((19|20)\d\d) ([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)'
text2 = text1.split(sep2)
print(text2)*
输入包含未按日期分隔的段落。一段示例:
21.01.2017 09:05:56 abcsdfasklfvd 02.01.2017 09:05:56 afgdsfggv
预期输出:
text2[0] = 21.01.2017 09:05:56 abcsdfasklfvd
text2[1] = 02.01.2017 09:05:56 afgdsfggv
然后我想根据升序应用某些排序功能
预期输出:
sorted[0] = 02.01.2017 09:05:56 afgdsfggv
sorted[1] = 21.01.2017 09:05:56 abcsdfasklfvd
答案 0 :(得分:1)
from datetime import datetime
text = ["21.01.2017 09:05:56 abcsdfasklfvd", "02.01.2017 09:05:56 afgdsfggv"]
sorted(text, key=lambda s: datetime.strptime(s[0:19], '%d.%m.%Y %H:%M:%S'))
如果模式dd.mm.yyyy hh:mm:ss
没有出现在段落中,则可以使用
text1 = "21.01.2017 09:05:56 abcsdfasklfvd 02.01.2017 09:05:56 afgdsfggv"
text = list()
for d, t in zip(*[iter(re.split(r'(\d+.\d+.\d+ \d+:\d+:\d+)', text1)[1:])]*2):
text.append(d + t)
sorted(text, key=lambda s: datetime.strptime(s[0:19], '%d.%m.%Y %H:%M:%S'))
def extract(s):
try:
return datetime.strptime(s, '%d.%m.%Y %H:%M:%S')
except (ValueError):
return datetime.strptime(s, '%d/%m/%Y %H:%M:%S')
sorted(text, key=lambda s: extract(s[0:19]))