独角鲸同步合作方公司数据项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

83 lines
2.2 KiB

# _*_ 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("无法解析日期字符串")