Python常用代码片段
开发高频常用代码块
常见的时间处理
示例:格式化字符串时间
from datetime import datetime, timedelta
fmt_time = "%Y-%m-%d %H:%M:%S"
fmt_data = "%Y-%m-%d"
# 格式化当前时间 datetime --> string
now = datetime.now()
str_now = now.strftime(fmt_time)
datetime_now = datetime.strptime(str_now, fmt_time)
print(str_now, type(str_now))
print(datetime_now, type(datetime_now))
示例:常见的时间区间获取
from datetime import datetime, timedelta
# 获取今天 现在时间
today = datetime.datetime.today()
# 昨天
yesterday = today - datetime.timedelta(days=1)
# 明天
tomorrow = today + datetime.timedelta(days=1)
# 获取当前日期
date = datetime.date.today()
# 获取一秒后的时间
s = today + datetime.timedelta(seconds=1)
# 获取一分钟后的时间
m = today + datetime.timedelta(minutes=1)
# 获取一小时后的时间
h = today + datetime.timedelta(hours=1)
# 获取一年后的时间
y = today + datetime.timedelta(days=365)
字典去重
应用场景:列表中有字典,根据某个value去除重复数据
def dict_set(sequence: list, par_name: str):
'''根据列表中嵌套字典的value去重'''
new_list = []
new_dict = {}
for i in range(len(sequence)):
if not new_dict.__contains__(sequence[i][par_name]):
new_dict[sequence[i][par_name]] = True
new_list.append(sequence[i])
return new_list
容量单位换算
示例1:
def convert_number_unit(number):
"""
转换数字单位
:param number:
:return:
"""
if not number:
return 0
number = int(number)
if number > 1000 ** 4:
return '%.2fT' % (float(number) / (1000 ** 4))
elif number > 1000 ** 3:
return '%.2fG' % (float(number) / (1000 ** 3))
elif number > 1000 ** 2:
return '%.2fM' % (float(number) / (1000 ** 2))
elif number > 1000:
return '%.2fK' % (float(number) / 1000)
else:
return number
示例2:
def bytes_to_human(n):
symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
prefix = {}
for i, s in enumerate(symbols):
prefix[s] = 1 << (i + 1) * 10
for s in reversed(symbols):
if n >= prefix[s]:
value = float(n) / prefix[s]
return '%.1f%s' % (value, s)
return '%sB' % n
参考地址:www.jb51.net/article/206…
字典生成器
应用场景:将字典中的值进行单位换算
data = {"max": 100, "avg": 20, "min": 0}
# new_data 返回的是一个新的字典
new_data = {k: v for k, v in data.items() if v > 0}
数字单位换算
def unit_conversion(number):
"""数字单位换算"""
if not number:
return 0
number = int(number)
if number > math.pow(10, 3):
value = number / math.pow(10, 3)
return '%.2f%s' % (value, "k")
return number