Извлеките 'WeekDay Month Date HH: MM: SS' из имени файла? - PullRequest
1 голос
/ 27 июня 2019

У меня есть файлы, которые содержат в своем имени полную дату и время. Я хочу извлечь конкретный формат и напечатать его в качестве первой строки 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')

Как получить дату и время в том же формате, что и изображение файла, как показано на скриншоте ниже?

screenshot of desired file contents

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

Использование регулярных выражений и datetime module.

Ex:

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 голос
/ 27 июня 2019

Вы можете использовать lookahead и loosbehind для извлечения строки даты и времени, используйте strptime для преобразования ее в объект datetime, а затем используйте 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'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...