# _*_ coding: utf-8 _*_ # @Time : 2021/5/27 14:58 # @File : funcs.py # @Software: PyCharm """ 此文件存放一些公用的工具函数 """ import datetime import random from random import shuffle from django_redis import get_redis_connection from utils.custom import MyCustomError def generate_random_str(randomlength=16): """ 生成一个指定长度的随机字符串 """ random_str = '' base_str = 'abcdefghigklmnopqrstuvwxyz0123456789' length = len(base_str) - 1 for i in range(randomlength): random_str += base_str[random.randint(0, length)] return random_str def generate_random_str_16_system(randomlength=16): """ 生成一个指定长度的随机字符串, 这个字符串看起来像16进制的 """ random_str = '' base_str = '0123456789abcdef' length = len(base_str) - 1 for i in range(randomlength): random_str += base_str[random.randint(0, length)] return random_str # 获取乱序字符串 def shuffle_str(s): # 将字符串转换成列表 str_list = list(s) # 调用random模块的shuffle函数打乱列表 shuffle(str_list) # 将列表转字符串 return ''.join(str_list) # 获取原来字符串在新字符串中的位置 def str_map(origin, new_str): result_str = [] new_str_list = list(new_str) for each in origin: index = new_str_list.index(each) result_str.append(index) # 生成轨迹 track = random.sample(range(0, len(result_str)), len(result_str)) return result_str, track # 定义尝试的日期格式列表 sys_formats = ["%Y-%m-%d", "%Y/%m/%d", "%Y年%m月%d日", "%Y%m%d"] def parse_date(date_string, formats=sys_formats): """ 尝试按照提供的格式解析日期字符串, 返回日期date @param date_string: 日期字符串 @param formats: 尝试格式 @return: """ if not isinstance(formats, list): if not isinstance(formats, str) or formats not in sys_formats: raise MyCustomError("日期格式不支持") formats = [formats, ] for fmt in formats: try: return datetime.datetime.strptime(date_string, fmt).date() except ValueError: pass raise MyCustomError("无法解析日期字符串")