O parâmetro mode define como uma função trata a extração de campos quando o campo já existe ou quando o novo valor está vazio.
Funções relacionadas
A tabela a seguir lista as funções que usam o parâmetro mode e seus valores padrão.
|
Categoria |
Função |
Valor padrão de mode |
|
Funções de atribuição de valor |
overwrite |
|
|
Funções de extração de valor |
fill-auto |
|
|
fill-auto |
||
|
fill-auto |
||
|
fill-auto |
||
|
fill-auto |
||
|
overwrite |
||
|
overwrite |
||
|
Funções de mapeamento e enriquecimento |
fill-auto |
|
|
fill-auto |
Modos de verificação e sobrescrita na extração de campos
A tabela a seguir descreve os valores do parâmetro mode.
|
Valor |
Descrição |
|
fill |
Define um novo campo se ele não existir ou se seu valor for uma string vazia. |
|
fill-auto |
Define um novo campo se o novo valor não for uma string vazia e uma das seguintes condições for atendida: o campo não existe ou o valor do campo é uma string vazia. |
|
add |
Define um novo campo se ele não existir. |
|
add-auto |
Define um novo campo se o novo valor não for uma string vazia e o campo não existir. |
|
overwrite |
Sempre define um novo campo. |
|
overwrite-auto |
Define um novo campo se o novo valor não for uma string vazia. |
A tabela a seguir mostra o comportamento das funções nos diferentes modos.
-
Log bruto
a: # An empty string b: 100 -
Exemplos de transformação
Modo
Regra de transformação
Resultado
add
e_set("c", "123", mode='add')a:# An empty string b: 100 c: 123e_set("c", "", mode='add')a:# An empty string b: 100 c:e_set("a", "123", mode='add')a:# An empty string b: 100add-auto
e_set("c", "", mode='add-auto')O campo
cnão é adicionado e o log bruto permanece inalterado.fill
e_set("c", "123", mode='fill')a:# An empty string b: 100 c: 123e_set("c", "", mode='fill')a:# An empty string b: 100 c:e_set("a", "123", mode='fill')a: 123 b: 100e_set("b", "123", mode='fill')O campo b mantém o valor
b: 100.fill-auto
e_set("c", "", mode='fill-auto')O campo
cnão é adicionado e o log bruto permanece inalterado.overwrite
e_set("c", "123", mode='overwrite')a:# An empty string b: 100 c: 123e_set("c", "", mode='overwrite')a:# An empty string b: 100 c:e_set("b", "200", mode='overwrite')a:# An empty string b: 200e_set("b", "", mode='overwrite')a:# An empty string b:overwrite-auto
e_set("b", "", mode='overwrite-auto')O campo b mantém o valor
b: 100.
Restrições de nomes de campos para extração
Esta seção aplica-se a funções como e_json, e_kv, e_kv_delimit e e_regex.
Somente campos cujos nomes obedecem às regras de nomenclatura podem ser extraídos. Campos com nomes fora do padrão são descartados. A expressão regular u'_*[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\u4e00-\u9fa5\u0800-\u4e00\\w\\.\\-]*' não é suportada. Por exemplo, campos nomeados como 123=abc, __1__:100, 1k=200 ou {"123": "456"} são descartados.
O exemplo a seguir ilustra o funcionamento das restrições padrão de nomes de campos:
-
Log bruto
data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } } -
Regra de transformação
e_json( "data", fmt="parent", sep="@", prefix="__", suffix="__", include_node=r"[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\w\-\.]*", mode="fill-auto", ) -
Resultado
data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } } data@__k1__:100 k2@__k3__:200 k4@__k5__:300