github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/md/kv_split.md (about)

     1  ### `kv_split()` {#fn-kv_split}
     2  
     3  函数原型:`fn kv_split(key, field_split_pattern = " ", value_split_pattern = "=", trim_key = "", trim_value = "", include_keys = [], prefix = "") -> bool`
     4  
     5  函数说明:从字符串中提取出所有的键值对
     6  
     7  参数:
     8  
     9  - `key`: key 名称
    10  - `include_keys`: 包含的 key 名称列表,仅提取在该列表内的 key;**默认值为 [],不提取任何 key**
    11  - `field_split_pattern`: 字符串分割,用于提取出所有键值对的正则表达式;默认值为 `" "`
    12  - `value_split_pattern`: 用于从键值对字符串分割出键和值,非递归;默认值为 `"="`
    13  - `trim_key`: 删除提取出的 key 的前导和尾随的所有指定的字符;默认值为 `""`
    14  - `trim_value`: 删除提取出的 value 的前导和尾随的所有指定的字符;默认值为 `""`
    15  - `prefix`: 给所有的 key 添加前缀字符串
    16  
    17  示例:
    18  
    19  
    20  ```python
    21  # input: "a=1, b=2 c=3"
    22  kv_split(_)
    23   
    24  '''output:
    25  {
    26    "message": "a=1, b=2 c=3",
    27    "status": "unknown",
    28    "time": 1679558730846377132
    29  }
    30  '''
    31  ```
    32  
    33  ```python
    34  # input: "a=1, b=2 c=3"
    35  kv_split(_, include_keys=["a", "c", "b"])
    36   
    37  '''output:
    38  {
    39    "a": "1,",
    40    "b": "2",
    41    "c": "3",
    42    "message": "a=1 b=2 c=3",
    43    "status": "unknown",
    44    "time": 1678087119072769560
    45  }
    46  '''
    47  ```
    48  
    49  ```python
    50  # input: "a=1, b=2 c=3"
    51  kv_split(_, trim_value=",", include_keys=["a", "c", "b"])
    52  
    53  '''output:
    54  {
    55    "a": "1",
    56    "b": "2",
    57    "c": "3",
    58    "message": "a=1, b=2 c=3",
    59    "status": "unknown",
    60    "time": 1678087173651846101
    61  }
    62  '''
    63  ```
    64  
    65  
    66  ```python
    67  # input: "a=1, b=2 c=3"
    68  kv_split(_, trim_value=",", include_keys=["a", "c"])
    69  
    70  '''output:
    71  {
    72    "a": "1",
    73    "c": "3",
    74    "message": "a=1, b=2 c=3",
    75    "status": "unknown",
    76    "time": 1678087514906492912
    77  }
    78  '''
    79  ```
    80  
    81  ```python
    82  # input: "a::1,+b::2+c::3" 
    83  kv_split(_, field_split_pattern="\\+", value_split_pattern="[:]{2}",
    84      prefix="with_prefix_",trim_value=",", trim_key="a", include_keys=["a", "b", "c"])
    85  
    86  '''output:
    87  {
    88    "message": "a::1,+b::2+c::3",
    89    "status": "unknown",
    90    "time": 1678087473255241547,
    91    "with_prefix_b": "2",
    92    "with_prefix_c": "3"
    93  }
    94  '''
    95  ```