1.list转带括号字符串(用于sql语句)
def get_sql_array(data_lst, val_str=False):
if not data_lst:
return ''
if val_str:
data_str = ", ".join(["'{}'".format(str(data)) for data in data_lst])
else:
data_str = ", ".join([str(data) for data in data_lst])
ret = "(" + f"{data_str}" + ")"
return ret
eq:
input: [1, 2, 3, 4]
val_str=False output: "(1, 2, 3, 4)"
val_str=True output: "('1', '2', '3', '4')"
2.生成随机整数
def gen_rand_code(length=4):
# 生成随机的整数,默认4位
a = 0
b = "9" * length
return str(random.randint(a, int(b))).zfill(length)
3.手机号校验
def is_tel(string):
# 电信号段 133,153,177,173,180,189,181,199
# 移动号段 134、135、136、137、138、139、147、150、151、152、157、158、159、182、187、188
# 联通号段 130、131、132、145、155、156、166、171、175、176、185、186、196
regex = re.compile(r"^1[3456789]\d{9}$")
ret = re.match(regex, string)
return isinstance(ret, re.Match)
4.邮箱校验
def is_email(string):
regex = re.compile(r'([A-Za-z0-9]+[.-_])*[A-Za-z0-9]+@[A-Za-z0-9-]+(.[A-Z|a-z]{2,})+')
ret = re.fullmatch(regex, string)
return isinstance(ret, re.Match)
5.获取pdf文件总页数
def get_pdf_page(pdf_path):
try:
reader = PdfFileReader(pdf_path)
# 不解密可能会报错:PyPDF2.utils.PdfReadError: File has not been decrypted
if reader.isEncrypted:
reader.decrypt('')
page_num = reader.getNumPages()
except:
page_num = 0
return page_num
6.提取html内容
def html2str(html_str):
str_ = ""
if not html_str:
return str_
try:
doc = pyquery.PyQuery(html_str)
str_ = doc.text()
except:
return str_
return str_
7.时间秒转时分格式
def second_format(second):
sec_str = ""
try:
second = int(second)
m, s = divmod(second, 60)
h, m = divmod(m, 60)
if not h:
sec_str = "{m}分钟".format(h=h, m=m)
else:
sec_str = "{h}小时{m}分钟".format(h=h, m=m)
except:
return sec_str
return sec_str
8.提取中文数字字母
def extract_chinese_number_letter(str_):
if not str_:
return ""
str_ = "".join(re.findall(r'[\u4e00-\u9fa5a-zA-Z0-9]', str_))
return str_
9.下划线转小驼峰
def to_lower_camel(content):
"""下划线转小驼峰法命名"""
if isinstance(content, dict):
return {re.sub('_([a-zA-Z])', lambda m: (m.group(1).upper()), k): v for k, v in content.items()}
elif isinstance(content, list):
return [{re.sub('_([a-zA-Z])', lambda m: (m.group(1).upper()), k): v for k, v in item.items()} for item in content]
else:
return content