Yes... nice to keep skills sharp! I got it to work... here's what I ended up with:
import arcpy
... import os
... #import codecs
... # parameters
... in_table = r'C:\Users\jwood\Documents\ArcGIS\Default.gdb\BGM_Chpt9'
... in_fc = r'C:\Users\jwood\Documents\ArcGIS\Default.gdb\OctDepths'
... out_folder = r'C:\Users\jwood\Documents\IUCN Red List\Shapefiles\Chpt9'
... polygon_code_field = "Code"
... #9
... # list all fields from the table
... all_fields = [f.name for f in arcpy.ListFields(in_table)]
... #12
... # loop through all rows in table
... with arcpy.da.SearchCursor(in_table, '*') as sc:
... for row in sc:
... #16
... item = dict(zip(all_fields, row)) # represent row as a dictionary
... #18
... species_name = item.get('BINOMIAL', 'Unknown')
... species_number = item.get('SpeciesNum', 0)
... iucn_num = item.get('IUCN_number', 'Unknown')
... origin = item.get('ORIGIN', 'Unknown')
... taxon_id = item.get('TAXON_ID', 'Unknown')
... compiler = item.get('COMPILER', 'Unknown')
... presence = item.get('PRESENCE', 'Unknown')
... citation = item.get('Citation', 'Unknown')
... seasonal = item.get('SEASONAL', 'Unknown')
... dist_comm = item.get('DIST_COMM', 'Unknown')
... year_ = item.get('YEAR_', 'Unknown')
... island_ = item.get('Island_', 'Unknown')
... source_ = item.get('Source_', 'Unknown')
... subPop = item.get('SUBPOP', 'Unknown')
... legend= item.get('LEGEND', 'Unknown')
... subSpec = item.get('SUBSPECIES', 'Unknown')
... chaptNum = item.get('ChaptNum', 'Unknown')
... tax_comm = item.get('TAX_COMM', 'Unknown')
... BGM_url = item.get('URL', 'Unknown')
... #38
...
... # get list of polygon codes that should be selected
... polygons_to_select = []
... for field_name, value in item.iteritems():
... field_name_upper = field_name.upper() # to make comparison case insensitive
... if field_name_upper and value == 1:
... polygon_code = field_name_upper
... polygons_to_select.append(polygon_code)
... #47
... if polygons_to_select:
... # create a string like "'A1','B2',..."
... codes = ",".join(["'" + str(pg) + "'" for pg in polygons_to_select])
... # build an SQL expression
... sql = '"%s" IN (%s)' % (polygon_code_field, codes)
... #53
... #print codes
... #print polygon_code_field
... #56
... # export as a new shapefile with species_name in the file name
... out_fc = os.path.join(out_folder, species_name)
... out_fc = arcpy.analysis.Select(in_fc, out_fc, sql).getOutput(0)
... #60
... # add the column with species number as string
... arcpy.management.AddField(out_fc, "BINOMIAL", "TEXT")
... arcpy.CalculateField_management(out_fc, "BINOMIAL", "'" + str(species_name) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "SpeciesNum", "TEXT")
... arcpy.CalculateField_management(out_fc, "SpeciesNum", "'" + str(species_number) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "ORIGIN", "TEXT")
... arcpy.management.AddField(out_fc, "TAXON_ID", "TEXT") #67
... arcpy.CalculateField_management(out_fc, "TAXON_ID", "'" + str(taxon_id) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "COMPILER", "TEXT")
... arcpy.CalculateField_management(out_fc, "COMPILER", "'" + str(compiler) + "'", "PYTHON_9.3") #70
... arcpy.management.AddField(out_fc, "PRESENCE", "TEXT")
... arcpy.CalculateField_management(out_fc, "PRESENCE", "'" + str(presence) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "Citation", "TEXT")
... arcpy.CalculateField_management(out_fc, "Citation", "'" + str(citation) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "SEASONAL", "TEXT")
... arcpy.CalculateField_management(out_fc, "SEASONAL", "'" + str(seasonal) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "DIST_COMM", "TEXT")
... arcpy.CalculateField_management(out_fc, "DIST_COMM", "'" + str(dist_comm) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "YEAR_", "TEXT")
... arcpy.CalculateField_management(out_fc, "YEAR_", "'" + str(year_) + "'", "PYTHON_9.3") #80
... arcpy.management.AddField(out_fc, "Island", "TEXT")
... arcpy.CalculateField_management(out_fc, "Island", "'" + str(island_) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "SOURCE", "TEXT")
... arcpy.CalculateField_management(out_fc, "SOURCE", "'" + str(source_) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "SUBPOP", "TEXT")
... arcpy.CalculateField_management(out_fc, "SUBPOP", "'" + str(subPop) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "LEGEND", "TEXT")
... arcpy.CalculateField_management(out_fc, "LEGEND", "'" + str(legend) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "SUBSPECIES", "TEXT")
... arcpy.CalculateField_management(out_fc, "SUBSPECIES", "'" + str(subSpec) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "ChaptNum", "TEXT")
... arcpy.CalculateField_management(out_fc, "ChaptNum", "'" + str(chaptNum) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "TAX_COMM", "TEXT")
... arcpy.CalculateField_management(out_fc, "TAX_COMM", "'" + str(tax_comm) + "'", "PYTHON_9.3")
... arcpy.management.AddField(out_fc, "BGMUrl", "TEXT")
... arcpy.CalculateField_management(out_fc, "BGMUrl", "'" + str(BGM_url) + "'", "PYTHON_9.3")
...
... #print island
... #print source
... #arcpy.Dissolve_management(out_fc, out_fc_Dissolv, "SpeciesNum", "", "MULTI_PART", "DISSOLVE_LINES")
...
... else:
... # no 'A1,A2' column contains 1 for this species, skip this species
... pass