File size: 1,397 Bytes
a57c6eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from typing import List

import re


def has_key_brace(string: str) -> bool:
    """检测字符串中是否含有{x}。
    注意,不是检测是否有{}

    Args:
        string (str):

    Returns:
        bool:
    """
    flag = re.search("\{.+\}", string)
    flag = flag is not None
    return flag


def merge_near_same_char(string: str, target_char=", ") -> str:
    """合并连续不变的指定字符为1个。如 `1,2,,3,,,4`合并成`1,2,3`

    Args:
        string (str): 待处理的字符串
        target_char (str, optional): 指定的连续字符. Defaults to ",".

    Returns:
        str: 处理后的字符串
    """
    string = re.sub("({}*)+".format(target_char), target_char, string)
    return string


def get_word_from_key_brace_string(string: str, start="{", end="}") -> List:
    """从含有`{key}`的模板字符串中 获取所有的关键词`key`

    Args:
        string (str): 含有`{key}`的模板字符串

    Returns:
        List: 所有关键词 key 列表
    """
    words = re.findall(f"{start}[^{start}|^{end}]+{end}", string)
    words = [word[len(start) : -len(end)] for word in words]
    return words


def clean_str_for_save(string: str, disallowed_chars: List = None):
    if disallowed_chars is None:
        disallowed_chars = r'[\\/:*?"<>|]'
    cleaned_filename = re.sub(disallowed_chars, "", string)
    return cleaned_filename