feat: tree
This commit is contained in:
@@ -26,6 +26,11 @@ def valid_email(email):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
LETTERS = 0b001
|
||||||
|
DIGITS = 0b010
|
||||||
|
PUNCTUATION = 0b100
|
||||||
|
|
||||||
|
|
||||||
def random_ascii_string(length, mask=None):
|
def random_ascii_string(length, mask=None):
|
||||||
"""
|
"""
|
||||||
生成随机 ascii 字符串
|
生成随机 ascii 字符串
|
||||||
@@ -33,9 +38,6 @@ def random_ascii_string(length, mask=None):
|
|||||||
:param mask:
|
:param mask:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
LETTERS = 0b001
|
|
||||||
DIGITS = 0b010
|
|
||||||
PUNCTUATION = 0b100
|
|
||||||
|
|
||||||
if mask is None:
|
if mask is None:
|
||||||
mask = LETTERS | DIGITS
|
mask = LETTERS | DIGITS
|
||||||
@@ -93,14 +95,15 @@ def build_url(base, additional_params=None):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
COUNTRY_ZONE = ('86',)
|
||||||
|
|
||||||
|
|
||||||
def parse_mobile(mobile_str):
|
def parse_mobile(mobile_str):
|
||||||
"""
|
"""
|
||||||
解析手机号码
|
解析手机号码
|
||||||
:param mobile_str:
|
:param mobile_str:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
COUNTRY_ZONE = ('86',)
|
|
||||||
|
|
||||||
match = re.findall(r'^(\+({0}))?(\d+)$'.format('|'.join(COUNTRY_ZONE)), mobile_str)
|
match = re.findall(r'^(\+({0}))?(\d+)$'.format('|'.join(COUNTRY_ZONE)), mobile_str)
|
||||||
if match:
|
if match:
|
||||||
zone, mobile = match[0][-2:]
|
zone, mobile = match[0][-2:]
|
||||||
@@ -116,6 +119,41 @@ def parse_mobile(mobile_str):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def list_to_tree(rows, id_key='id', parent_id_key='parent_id', i=0):
|
||||||
|
"""
|
||||||
|
list转tree的函数
|
||||||
|
:param rows:
|
||||||
|
:param id_key:
|
||||||
|
:param parent_id_key:
|
||||||
|
:param i:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
data = []
|
||||||
|
for row in rows:
|
||||||
|
if row[parent_id_key] == i:
|
||||||
|
row['children'] = list_to_tree(rows, id_key=id_key, parent_id_key=parent_id_key, i=row[id_key])
|
||||||
|
data.append(row)
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def cut_tree(trees, nodes, id_key='id', parent_id_key='parent_id'):
|
||||||
|
"""
|
||||||
|
根据叶结点整理出包含所有叶节点的最小树结构
|
||||||
|
:param trees:
|
||||||
|
:param nodes: 叶结点
|
||||||
|
:param id_key:
|
||||||
|
:param parent_id_key:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
data = []
|
||||||
|
for row in trees:
|
||||||
|
children = cut_tree(row['children'], nodes, id_key=id_key, parent_id_key=parent_id_key)
|
||||||
|
if children or row['id'] in nodes:
|
||||||
|
row['children'] = children
|
||||||
|
data.append(row)
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
s = valid_email('wslstest@sample.com')
|
s = valid_email('wslstest@sample.com')
|
||||||
print(s)
|
print(s)
|
||||||
|
Reference in New Issue
Block a user