1
resposta

Formatar string em python com arquivo yaml

Boa tarde

A partir desse arquivo format.yaml preciso formatar uma string em python


cpf:
  length: 11
  align: left
  padding: spaces
name:
  length: 14
  align: left
  padding: spaces
value:
  length: 8
  align: right
  padding: zeroes

esse imput tem que ser impressa comop string com a formatção do yaml


  input = [
    { "name": "Maria Neusa de Aparecida", "cpf": "97905796671",
    "state": "Sao Paulo", "value": "1234"},
    {"name": "Ricardo Fontes", "cpf": "44010762900",
    "state": "Rio Grande do Sui", "value": "567"}
]

Exemplo de saida : "97905796671Maria Neusa de00001234\n44010762900Ricardo Fontes00000567

1 resposta

Olá Juliano, tudo bem com você?

Uma forma que podemos chegar ao resultado esperado, será percorrendo a lista de dicionários e validarmos cada valor para uma regra específica, ou seja:

  • Os nomes conterão 14 dígitos e podemos fazer isso através de um fatiamento na string, pegando do primeiro dígito até o décimo quarto, lembrando que esse último dígito não é incluso.
  • Já os valores, conterão 8 dígitos e terão de ser preenchidos com zero caso não tenha essa quantidade.
  • Por fim, o cpf terá 11 dígitos e também realizaremos o fatiamento.

Em código ficará da seguinte forma:

input = [
    {"name": "Maria Neusa de Aparecida", "cpf": "97905796671",
     "state": "Sao Paulo", "value": "123"},
    {"name": "Ricardo Fontes", "cpf": "44010762900",
     "state": "Rio Grande do Sul", "value": "567"}
]

for i in range(len(input)):
    nome = input[i].get("name", "Sem dados")
    nome = nome[:14]
    value = input[i].get("value", "Sem dados")
    value = value[:8].zfill(8)
    cpf = input[i].get("cpf", "Sem dados")
    cpf = cpf[:11]

    string_completa = f"{cpf}{nome}{value}\\n"
    print(string_completa, end="")

Resultado

97905796671Maria Neusa de00000123\n44010762900Ricardo Fontes00000567\n

Foi feito o uso do método .get() que tem como função buscar o valor presente em uma chave definida, caso não seja encontrado retorna uma mensagem padrão.

No artigo abaixo você poderá ler um pouco mais sobre o método gete suas aplicações. O artigo está em inglês, caso tenha dificuldades com o idioma, recomendo o uso do tradutor do navegador.

No código acima foi utilizado a função zfill para o preenchimento de zeros, para entender mais sobre essa função, recomendo a seguinte leitura:

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!