2015-09-14 3 views
2

Я использую split для разделения значений M/D/Y из одного поля, чтобы сделать их в своих соответствующих полях. Мой сценарий в бомбардировке значений NULL в исходном поле даты для поля «День».Python .split() function

10/27/1990 ----> M: 10 D: 27 Y: 1990

# Process: Calculate Field Month 
arcpy.CalculateField_management(in_table="Assess_Template",field="Assess_Template.Month",expression="""!Middleboro_xlsx_Sheet2.Legal_Reference_Sale_Date!.split("/")[0]""",expression_type="PYTHON_9.3",code_block="#") 

# Process: Calculate Field Day 
arcpy.CalculateField_management(in_table="Assess_Template",field="Assess_Template.Day",expression="""!Middleboro_xlsx_Sheet2.Legal_Reference_Sale_Date!.split("/")[1]""",expression_type="PYTHON_9.3",code_block="#") 

# Process: Calculate Field Year 
arcpy.CalculateField_management(in_table="Assess_Template",field="Assess_Template.Year",expression="""!Middleboro_xlsx_Sheet2.Legal_Reference_Sale_Date!.split("/")[-1]""",expression_type="PYTHON_9.3",code_block="#") 

Я не уверен, как я должен решить эту проблему; Любые предложения будут ценны!

+3

Похоже, что вам нужно будет либо охранять 'split()', например. 'x.split ('/'), если x else x' или исправить данные. – AChampion

ответ

0

Что-то, как это должно работать (для расчета год, где это возможно):

in_table = "Assess_Template" 
field = "Assess_Template.Year" 
expression = "get_year(!Middleboro_xlsx_Sheet2.Legal_Reference_Sale_Date!)" 
codeblock = """def get_year(date): 
    try: 
     return date.split("/")[-1] 
    except: 
     return date""" 

arcpy.CalculateField_management(in_table, field, expression, "PYTHON_9.3", codeblock) 

Удачи!

Tom