我的文件名中包含完整的日期和时间。我想提取特定格式并将其打印为我正在写的CSV的第一行。
我的文件名如下:
VIN5_2019-04-03_10-21-26_38
我希望我的CSV的第一行打印如下:
date Wed Apr 3 10:21:26.000 am 2019
我的代码如下:
import can
import csv
import datetime
import re
filename = open('C:\\Users\\xyz\\files\\time_linear_Hexa.csv', "w")
log1 = can.BLFReader('C:\\Users\\xyz\\blf files\\VIN5_2019-04-03_10-33-59_39.blf')
filename.write(re.search("([0-9]{4}\-[0-9]{2}\-[0-9]{2})", filename))
filename.write('base hex timestamps absolute\ninternal events logged \n// version 11.0.0 \n')
如何以与文件图像相同的格式实现日期和时间,如下面的屏幕快照所示?
最佳答案
您可以使用前瞻性和宽松性来提取日期时间字符串,使用strptime
将其转换为日期时间对象,然后使用strftime
将其格式化为所需的形式。
import re
import datetime from datetime
s = "VIN5_2019-04-03_10-21-26_38"
res = re.search('(?<=\w{5})[\w-]*(?=_\d{2})', s)
dt_string = res[0]
dt = datetime.strptime(dt_string, '%Y-%m-%d_%H-%M-%S')
'{} {} {}'.format(dt.strftime('%a %b %d %H:%M:%S.%f')[:-3], dt.strftime('%p').lower(), dt.strftime('%Y'))