我有一些文件,其中包含完整的日期和时间。我想提取特定格式并将其打印为我正在编写的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')
如何以与下面的屏幕快照所示的文件图像相同的格式获取日期和时间?
答案 0 :(得分:2)
使用正则表达式和datetime模块。
例如:
import re
import datetime
s = "VIN5_2019-04-03_10-21-26_38"
m = re.search(r"[A-Z]+\d_(?P<date>\d{4}\-\d{2}\-\d{2})_(?P<time>\d{2}\-\d{2}\-\d{2})", s)
if m:
print(datetime.datetime.strptime("{} {}".format(m.group('date'), m.group('time')), "%Y-%m-%d %H-%M-%S").strftime("%a %b %d %H:%M:%S.%f %p %Y"))
输出:
Wed Apr 03 10:21:26.000000 AM 2019
答案 1 :(得分:1)
您可以使用先行搜索和后退来提取日期时间字符串,使用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'))