Разбирать имена файлов по заданному формату c в Python - PullRequest
0 голосов
/ 12 февраля 2020

Я хотел бы создать DataFrame для анализа имени некоторых файлов определенного формата.

формат имени файла: event_A_(number)_(start datetime)_(end datetime)_(code)_(category).txt

формат даты и времени: YYYY-MM-DD_HH-MM_SS

пример файла имени: event_A_12_2019-01-22_01-35_20_2019-01-22_19-15_13_b123_aa.txt

Я пытался использовать split, затем простое регулярное выражение и затем слияние строк, но это должен быть простой способ сделать это. Любые предложения о том, как выполнить sh это?

Вот как мне удается это сделать, но я считаю, что должен быть более простой способ:

lst_split = file.split('_')
#number = re.findall(r"_A_(..)",file)
number = lst_split[2]
start_date = lst_split[3]
tmp = lst_split[4] + ":" + lst_split[5]
start_time = tmp.replace('-',':')
end_date = lst_split[6]
tmp = lst_split[7] + ":" + lst_split[8]
end_time = tmp.replace('-',':')
code = lst_split[9]
tmp = (lst_split[10]).split('.')
category = tmp[0]
print(number,start_date,start_time,end_date,end_time,code,category)

1 Ответ

0 голосов
/ 12 февраля 2020

Вы можете использовать распаковку, чтобы поместить все части в переменные. Тогда у вас будет более понятный код и меньше преобразований:

file = "event_A_12_2019-01-22_01-35_20_2019-01-22_19-15_13_b123_aa.txt"
_,_,number,start_date,startHM,startS,end_date,endHM,endS,code,category = file.split("_")
start_time = f"{startHM}:{startS}".replace("-",":")
end_time   = f"{endHM}:{endS}".replace("-",":")
category   = category.strip(".txt")
print(number,start_date,start_time,end_date,end_time,code,category)

# 12 2019-01-22 01:35:20 2019-01-22 19:15:13 b123 aa

обратите внимание, что вы также можете разбить его, используя (довольно громоздкое) регулярное выражение, но вам все равно придется выполнять подстановку разделителя для компоненты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...