#python #arrays #json #flask
Вопрос:
Итак, я новичок в python и flask, мне просто интересно, есть ли способ отформатировать 20210910103255 до 2021/09/10 10:32:55?? Я попытался использовать этот код. Это делает свою работу, но я хочу найти лучший способ ее реализации. Это был мой код:
"date": as_json['array_id'].split("_")[3][:4] '/' as_json['array_id'].split("_")[3][4:6] '/' as_json['array_id'].split("_")[3][6:8]
' ' as_json['array_id'].split("_")[3][8:10] ':' as_json['array_id'].split("_")[3][10:12] ':' as_json['array_id'].split("_")[3][12:14]
Комментарии:
1.
date = f"{array_id[:4}/{array_id[4:6]}/{array_id[6:8]} {array_id[8:10]}:{array_id[10:12]}:{array_id[12:]}"
принимая во вниманиеarray_id = list("20210910103255")
Ответ №1:
В вашем коде нет ничего плохого, он выполняет свою работу и не тратит ненужные циклы процессора на анализ и повторное создание метки времени. Для более чистого кода попробуйте использовать f-строки:
d = as_json['array_id'].split("_")[3]
"date": f"{d[:4]}/{d[4:6]}/{d[6:8]} {d[8:10]}:{d[10:12]}:{d[12:14]}"
Эта версия длиннее, но легче для понимания:
date = as_json['array_id'].split("_")[3]
year = date[:4]
month = date[4:6]
day = date[6:8]
hours = date[8:10]
minutes = date[10:12]
seconds = date[12:14]
"date": f"{year}/{month}/{day} {hours}:{minutes}:{seconds}"
Или, если вы хотите пойти по пути синтаксического анализа, используйте дату и время:
from datetime import datetime
date = as_json['array_id'].split("_")[3]
datetime_object = datetime.strptime(date, "%Y%m%d%H%M%S")
"date": datetime_object.strftime("%Y/%m/%d %H:%M:%S")
Комментарии:
1. Спасибо, Ян! Я использовал f-строку, которую вы упомянули, и она работала идеально!
Ответ №2:
Я думаю, что дата-время было бы лучшим инструментом, чтобы помочь вам здесь.
import datetime
x = datetime.datetime.now()
print(x)
Более подробную информацию можно найти здесь https://www.w3schools.com/python/python_datetime.asp
Комментарии:
1. Вы должны ссылаться на официальную документацию для модуля datetime, а не на w3schools: docs.python.org/3/library/datetime.html
Ответ №3:
Вы можете использовать dateutil
библиотеку для этого:
$ pip install python-dateutil
На языке Python:
>>> import dateutil
>>> dateutil.parser.parse('20210910103255').strftime('%Y/%m/%d %H:%M:%S')
'2021/09/10 10:32:55'