Conseguindo que o ArcGIS inclua zeros à esquerda no campo de texto?

9

Estou inserindo caracteres em um campo de texto que é essencialmente um ID de 5 números. Eu preciso que zeros à esquerda sejam incluídos no valor, mas toda vez que insiro ou calculo o campo, os zeros à esquerda são removidos (mesmo que as propriedades do campo digam que é um campo de texto com 5 caracteres).

Como forço o campo a incluir zeros à esquerda?

CJSF
fonte

Respostas:

12

O Python possui um built-in para zeros à esquerda. Use str.zfill()para adicionar zeros à esquerda em um campo de texto.

my_string = "1"
print my_string.zfill(2)   # Prints 01

my_string = "1000"
print my_string.zfill(2)   # Prints 1000

(exemplo de https://stackoverflow.com/a/21620624/5754917 )

Portanto, na calculadora de campo, você só precisa especificar o nome do campo com seu ID e preencher com zeros

str(!myfield!).zfill(5)

insira a descrição da imagem aqui

E o resultado final:

insira a descrição da imagem aqui

Lembre-se de mudar a calculadora de campo para "Python Parser"

Midavalo
fonte
OK, isso parece muito simples. Vou dar uma chance! Obrigado.
CJSF
Bem! Isso é exatamente o que eu precisava e foi tão fácil que estou quase envergonhada! Muito obrigado!
CJSF 10/10
3

Basta colocar seu texto entre aspas. Aspas duplas, se você estiver no modo de script VB, e as duplas ou simples, se estiver no modo Python.

Para explicar: Ao digitar os números, você está atribuindo à Calculadora de Campo um valor inteiro, que será convertido em uma string para você, a fim de inseri-lo no campo de tipo de string. Para números inteiros, os zeros à esquerda não têm valor nem significado; portanto, eles são omitidos. Se você colocá-lo entre aspas, está passando uma string, que já é o tipo de dados correto, para que seja deixada em paz.

Isso também pressupõe que esse campo seja realmente do tipo "Texto". Talvez tenha sido definido como Inteiro longo ou curto, que também causaria esse comportamento.

PhilippNagel
fonte
Obrigado, acho que isso também funcionará. Mas, eventualmente, precisarei pegar o valor sem os zeros à esquerda de parte de outro campo como parte de um processo semi-automático maior.
CJSF
Se você pode editar sua pergunta e adicionar mais alguns detalhes e todo o código que você possui atualmente, provavelmente poderemos ajudá-lo melhor. Parecia que você estava apenas escrevendo valores manualmente em várias linhas.
precisa saber é o seguinte
2

Você pode usar um bloco de código Python .

Adicione esta definição de função no bloco de código:

def addZero(value):
    if value <= 9:
        output = '0000' + str(value)
    elif value <= 99:
        output = '000' + str(value)
    elif value <= 999:
        output = '00' + str(value)
    elif value <= 9999:
        output = '0' + str(value)
    return output

Você pode usá-lo como:

addZero(!Field!) # numeric field

ou

addZero(123) # for example
aldo_tapia
fonte
Você vai querer fazer as definições <= para os limites superiores :) #
1015 MaryBeth
@ MaryBeth sim, minha culpa. Editado
aldo_tapia
2

Como mencionado nas outras respostas, você precisa garantir que seus números sejam convertidos em strings.

Se você perder seus 0s ou os tiver em um campo numérico, crie uma largura de coluna 5, apenas digite o seguinte comando Python:

str(!MYFIELD!).zfill(5)
gisnside
fonte
Propriedade de @Midavalo! Eu estava muito lento: D
gisnside