Python常用代码片段

1,489 阅读2分钟

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