<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Calculate field based on substrings within a string contained in another field in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/calculate-field-based-on-substrings-within-a/m-p/2626#M228</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I would recomend an update cursor as well,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;but to use a dictionary instead of all the elifs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Too, you mention that the field value for 'REF_ID' is a semi-colon delimited list&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and you want 'DATA_SOURCE' to be a similar list&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You could incorporate something like this quick sketch:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;aDict = {'59333': "Gravity",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '59334': "Magnetics",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '61297': "Radar",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '61299': "Landsat",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '62227': "Fieldwork"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

idVal = "59333;59334;61297;9999;61299;62227"
idList = idVal.split(';')
outStr = ''
for val in idList:
&amp;nbsp;&amp;nbsp;&amp;nbsp; if val in aDict.keys():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word = aDict[val]
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word = "Unknown"
&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(outStr) &amp;gt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word = ";%s" % (word)
&amp;nbsp;&amp;nbsp;&amp;nbsp; outStr = "%s%s" % (outStr, word)

&amp;nbsp;&amp;nbsp;&amp;nbsp; print '\n', outStr
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;idVal is the 'REF_ID' value you obtain from the cursor for that row&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The outStr (the final one, this code reports it for every itteration....)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;is what you use to update 'DATA_SOURCE'&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 10 Dec 2021 20:07:04 GMT</pubDate>
    <dc:creator>markdenil</dc:creator>
    <dc:date>2021-12-10T20:07:04Z</dc:date>
    <item>
      <title>Calculate field based on substrings within a string contained in another field</title>
      <link>https://community.esri.com/t5/python-questions/calculate-field-based-on-substrings-within-a/m-p/2623#M225</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am in need of a python code block that I can place into the calculate field tool in model builder.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a field called REF_ID.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;REF_ID contains a string which is essentially just a list of semi-colon separated codes eg 59333; 10203; 61297; 12345 etc.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;From REF_ID I want another field called DATA_SOURCE to be calculated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;DATA_SOURCE needs to be populated with text descriptions of particular codes, not all of the codes, within the REF_ID field.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So, I think I need to set up a library of the specific codes and their corresponding descriptions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;59333 Gravity&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;59334 Magnetics&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;61297 Radar&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;61299 Landsat&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;62227 Fieldwork&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The python code then needs to search the string in the REF_ID field and look for the occurrence of any of the codes listed above.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Not all will be present and of those that are present, they should only occur once.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The DATA_SOURCE field should then be populated with a semi-colon separated list of the corresponding descriptions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;eg. Gravity; Radar; etc.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does anyone have a good solution for this?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Much obliged.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Neil Wrobel&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 May 2014 09:54:11 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-field-based-on-substrings-within-a/m-p/2623#M225</guid>
      <dc:creator>NeilWrobel</dc:creator>
      <dc:date>2014-05-02T09:54:11Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate field based on substrings within a string contained in another field</title>
      <link>https://community.esri.com/t5/python-questions/calculate-field-based-on-substrings-within-a/m-p/2624#M226</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Neil,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You could use the update cursor to do this.&amp;nbsp; Ex:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
import arcpy, sys
from arcpy import env
env.workspace = r"C:\temp\python\test.gdb"

fc = 'gages'
fields = ['REF_ID', 'DATA_SOURCE']

with arcpy.da.UpdateCursor(fc, ["REF_ID", "DATA_SOURCE"]) as cursor:
&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if row[0] == 59333:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[1] = 'Gravity'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif row[0] == 59334:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[1] = 'Magnetics'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif row[0] == 61297:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[1] = 'Radar'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .....
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.updateRow(row)&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Dec 2021 20:06:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-field-based-on-substrings-within-a/m-p/2624#M226</guid>
      <dc:creator>JakeSkinner</dc:creator>
      <dc:date>2021-12-10T20:06:59Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate field based on substrings within a string contained in another field</title>
      <link>https://community.esri.com/t5/python-questions/calculate-field-based-on-substrings-within-a/m-p/2625#M227</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I would recomend an update cursor as well,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;but to use a dictionary instead of all the elifs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Too, you mention that the field value for 'REF_ID' is a semi-colon delimited list&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and you want 'DATA_SOURCE' to be a similar list&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You could incorporate something like this quick sketch:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;aDict = {'59333': "Gravity",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '59334': "Magnetics",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '61297': "Radar",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '61299': "Landsat",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '62227': "Fieldwork"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

idVal = "59333;59334;61297;9999;61299;62227"
idList = idVal.split(';')
outStr = ''
for val in idList:
&amp;nbsp;&amp;nbsp;&amp;nbsp; if val in aDict.keys():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word = aDict[val]
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word = "Unknown"
&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(outStr) &amp;gt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word = "; %s" % (word)
&amp;nbsp;&amp;nbsp;&amp;nbsp; outStr = "%s%s" % (outStr, word)

&amp;nbsp;&amp;nbsp;&amp;nbsp; print '\n', outStr
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;idVal is the 'REF_ID' value you obtain from the cursor for that row&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The outStr (the final one, this code reports it for every itteration....)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;is what you use to update 'DATA_SOURCE'&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Dec 2021 20:07:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-field-based-on-substrings-within-a/m-p/2625#M227</guid>
      <dc:creator>markdenil</dc:creator>
      <dc:date>2021-12-10T20:07:01Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate field based on substrings within a string contained in another field</title>
      <link>https://community.esri.com/t5/python-questions/calculate-field-based-on-substrings-within-a/m-p/2626#M228</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I would recomend an update cursor as well,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;but to use a dictionary instead of all the elifs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Too, you mention that the field value for 'REF_ID' is a semi-colon delimited list&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and you want 'DATA_SOURCE' to be a similar list&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You could incorporate something like this quick sketch:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;aDict = {'59333': "Gravity",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '59334': "Magnetics",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '61297': "Radar",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '61299': "Landsat",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '62227': "Fieldwork"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

idVal = "59333;59334;61297;9999;61299;62227"
idList = idVal.split(';')
outStr = ''
for val in idList:
&amp;nbsp;&amp;nbsp;&amp;nbsp; if val in aDict.keys():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word = aDict[val]
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word = "Unknown"
&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(outStr) &amp;gt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word = ";%s" % (word)
&amp;nbsp;&amp;nbsp;&amp;nbsp; outStr = "%s%s" % (outStr, word)

&amp;nbsp;&amp;nbsp;&amp;nbsp; print '\n', outStr
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;idVal is the 'REF_ID' value you obtain from the cursor for that row&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The outStr (the final one, this code reports it for every itteration....)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;is what you use to update 'DATA_SOURCE'&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Dec 2021 20:07:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-field-based-on-substrings-within-a/m-p/2626#M228</guid>
      <dc:creator>markdenil</dc:creator>
      <dc:date>2021-12-10T20:07:04Z</dc:date>
    </item>
  </channel>
</rss>

