Splitting string ID code into various partsArcMap Field Calculator syntax (again)Removing numeric characters from alphanumeric value in field calculation?Creating a new integer field based on text in a different field - ArcGIS 10.1How to replace null values in attribute table ArcGIS 10.2Arcmap record value is not displaying entirelyextract substring after first numberArcMap 10.3.1-Attribute Table Sorting IssuesSelect points by continuous numbersAddress Prefix Strip Using PythonSplitting ID number along hyphens and creating new field with only parts of ID In Field Calculator?

Hero deduces identity of a killer

The IT department bottlenecks progress. How should I handle this?

Has any country ever had 2 former presidents in jail simultaneously?

Why can Carol Danvers change her suit colours in the first place?

Moving brute-force search to FPGA

Why does AES have exactly 10 rounds for a 128-bit key, 12 for 192 bits and 14 for a 256-bit key size?

Creepy dinosaur pc game identification

Open a doc from terminal, but not by its name

Why is this estimator biased?

Does an advisor owe his/her student anything? Will an advisor keep a PhD student only out of pity?

What are the advantages of simplicial model categories over non-simplicial ones?

How do you make your own symbol when Detexify fails?

How do apertures which seem too large to physically fit work?

Why is it that I can sometimes guess the next note?

14 year old daughter buying thongs

photorec photo recovery software not seeing my mounted filesystem - trying to use photorec to recover lost jpegs

Why does the Sun have different day lengths, but not the gas giants?

On a tidally locked planet, would time be quantized?

Does Doodling or Improvising on the Piano Have Any Benefits?

Lowest total scrabble score

How do you respond to a colleague from another team when they're wrongly expecting that you'll help them?

A social experiment. What is the worst that can happen?

15% tax on $7.5k earnings. Is that right?

How does the math work for Perception checks?



Splitting string ID code into various parts


ArcMap Field Calculator syntax (again)Removing numeric characters from alphanumeric value in field calculation?Creating a new integer field based on text in a different field - ArcGIS 10.1How to replace null values in attribute table ArcGIS 10.2Arcmap record value is not displaying entirelyextract substring after first numberArcMap 10.3.1-Attribute Table Sorting IssuesSelect points by continuous numbersAddress Prefix Strip Using PythonSplitting ID number along hyphens and creating new field with only parts of ID In Field Calculator?













0















I have a series of identification codes that I need to split out. The format of these codes is [region(letter)][district(number)] - [place(number)][subdistrict(letter)].



An example of some codes includes S22-201, TT100-12, and V6-1B. Often there is no subdistrict, and all points fall within the same larger district (so no As or Cs or whatever at the end of the string.



I can do parts of it, like splitting at the hyphen.



!Original_ID!.split('-')[0]


and then extracting the district



!Split_ID![1:3]


But it seems like two steps for this are unnecessary, and only works when I know the specific number of characters in the string, which isn't realistic for a large data set.



I'd like to be able to grab each piece at once:



  • letters on the left of the hyphen

  • numbers on the left of the hyphen

  • numbers on the right of the hyphen

  • letters (if any) on the right of the hyphen.

I'd need the numeric fields to be integers (or I guess possibly floats in some rare cases maybe).




I am still not doing something correctly. I may need to start smaller and brush up on my Python before I do this, I just assumed this would be a good place to start learning. Here's where I am at, in the Python window in ArcMap.



with arcpy.da.UpdateCursor("Wet_Sub",['Flag_ID','District','Split_ID']) as uCur:
for sRow in uCur:
OrigID = sRow[0].split('-')[0] # first element in the Original_ID
charRng = range(len(OrigID)) # a range to iterate over
Chars = ''
Numbers = ''
for Idx in charRng:
if OrigID[Idx].isnumeric():
Numbers += OrigID[Idx]
else:
chars += OrigID[Idx]
sRow[1] = float(Numbers)
sRow[2] = Chars
uCur.updateRow(sRow)


"Wet_Sub" and 'Flag_ID' are the names of the feature class and actual original field. I also tried to follow along with user2856's suggestion. It looks like I may need to be using both of those code blocks, one pasted into another, but I wasn't sure how to fit them together and what parts to change/remove (e.g. "etc... from code block above").










share|improve this question




























    0















    I have a series of identification codes that I need to split out. The format of these codes is [region(letter)][district(number)] - [place(number)][subdistrict(letter)].



    An example of some codes includes S22-201, TT100-12, and V6-1B. Often there is no subdistrict, and all points fall within the same larger district (so no As or Cs or whatever at the end of the string.



    I can do parts of it, like splitting at the hyphen.



    !Original_ID!.split('-')[0]


    and then extracting the district



    !Split_ID![1:3]


    But it seems like two steps for this are unnecessary, and only works when I know the specific number of characters in the string, which isn't realistic for a large data set.



    I'd like to be able to grab each piece at once:



    • letters on the left of the hyphen

    • numbers on the left of the hyphen

    • numbers on the right of the hyphen

    • letters (if any) on the right of the hyphen.

    I'd need the numeric fields to be integers (or I guess possibly floats in some rare cases maybe).




    I am still not doing something correctly. I may need to start smaller and brush up on my Python before I do this, I just assumed this would be a good place to start learning. Here's where I am at, in the Python window in ArcMap.



    with arcpy.da.UpdateCursor("Wet_Sub",['Flag_ID','District','Split_ID']) as uCur:
    for sRow in uCur:
    OrigID = sRow[0].split('-')[0] # first element in the Original_ID
    charRng = range(len(OrigID)) # a range to iterate over
    Chars = ''
    Numbers = ''
    for Idx in charRng:
    if OrigID[Idx].isnumeric():
    Numbers += OrigID[Idx]
    else:
    chars += OrigID[Idx]
    sRow[1] = float(Numbers)
    sRow[2] = Chars
    uCur.updateRow(sRow)


    "Wet_Sub" and 'Flag_ID' are the names of the feature class and actual original field. I also tried to follow along with user2856's suggestion. It looks like I may need to be using both of those code blocks, one pasted into another, but I wasn't sure how to fit them together and what parts to change/remove (e.g. "etc... from code block above").










    share|improve this question


























      0












      0








      0








      I have a series of identification codes that I need to split out. The format of these codes is [region(letter)][district(number)] - [place(number)][subdistrict(letter)].



      An example of some codes includes S22-201, TT100-12, and V6-1B. Often there is no subdistrict, and all points fall within the same larger district (so no As or Cs or whatever at the end of the string.



      I can do parts of it, like splitting at the hyphen.



      !Original_ID!.split('-')[0]


      and then extracting the district



      !Split_ID![1:3]


      But it seems like two steps for this are unnecessary, and only works when I know the specific number of characters in the string, which isn't realistic for a large data set.



      I'd like to be able to grab each piece at once:



      • letters on the left of the hyphen

      • numbers on the left of the hyphen

      • numbers on the right of the hyphen

      • letters (if any) on the right of the hyphen.

      I'd need the numeric fields to be integers (or I guess possibly floats in some rare cases maybe).




      I am still not doing something correctly. I may need to start smaller and brush up on my Python before I do this, I just assumed this would be a good place to start learning. Here's where I am at, in the Python window in ArcMap.



      with arcpy.da.UpdateCursor("Wet_Sub",['Flag_ID','District','Split_ID']) as uCur:
      for sRow in uCur:
      OrigID = sRow[0].split('-')[0] # first element in the Original_ID
      charRng = range(len(OrigID)) # a range to iterate over
      Chars = ''
      Numbers = ''
      for Idx in charRng:
      if OrigID[Idx].isnumeric():
      Numbers += OrigID[Idx]
      else:
      chars += OrigID[Idx]
      sRow[1] = float(Numbers)
      sRow[2] = Chars
      uCur.updateRow(sRow)


      "Wet_Sub" and 'Flag_ID' are the names of the feature class and actual original field. I also tried to follow along with user2856's suggestion. It looks like I may need to be using both of those code blocks, one pasted into another, but I wasn't sure how to fit them together and what parts to change/remove (e.g. "etc... from code block above").










      share|improve this question
















      I have a series of identification codes that I need to split out. The format of these codes is [region(letter)][district(number)] - [place(number)][subdistrict(letter)].



      An example of some codes includes S22-201, TT100-12, and V6-1B. Often there is no subdistrict, and all points fall within the same larger district (so no As or Cs or whatever at the end of the string.



      I can do parts of it, like splitting at the hyphen.



      !Original_ID!.split('-')[0]


      and then extracting the district



      !Split_ID![1:3]


      But it seems like two steps for this are unnecessary, and only works when I know the specific number of characters in the string, which isn't realistic for a large data set.



      I'd like to be able to grab each piece at once:



      • letters on the left of the hyphen

      • numbers on the left of the hyphen

      • numbers on the right of the hyphen

      • letters (if any) on the right of the hyphen.

      I'd need the numeric fields to be integers (or I guess possibly floats in some rare cases maybe).




      I am still not doing something correctly. I may need to start smaller and brush up on my Python before I do this, I just assumed this would be a good place to start learning. Here's where I am at, in the Python window in ArcMap.



      with arcpy.da.UpdateCursor("Wet_Sub",['Flag_ID','District','Split_ID']) as uCur:
      for sRow in uCur:
      OrigID = sRow[0].split('-')[0] # first element in the Original_ID
      charRng = range(len(OrigID)) # a range to iterate over
      Chars = ''
      Numbers = ''
      for Idx in charRng:
      if OrigID[Idx].isnumeric():
      Numbers += OrigID[Idx]
      else:
      chars += OrigID[Idx]
      sRow[1] = float(Numbers)
      sRow[2] = Chars
      uCur.updateRow(sRow)


      "Wet_Sub" and 'Flag_ID' are the names of the feature class and actual original field. I also tried to follow along with user2856's suggestion. It looks like I may need to be using both of those code blocks, one pasted into another, but I wasn't sure how to fit them together and what parts to change/remove (e.g. "etc... from code block above").







      arcgis-desktop arcmap field-calculator python-parser






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 15 at 20:05









      PolyGeo

      53.7k1781244




      53.7k1781244










      asked Mar 15 at 1:12









      vce500vce500

      42




      42




















          2 Answers
          2






          active

          oldest

          votes


















          2














          You're not going to be able to calculate two fields in one go.. though you can split it up into two calcs. I would do this with an update cursor:



          with arcpy.da.UpdateCursor(YourFeatureClass,['Original_ID','District','Split_ID']) as uCur:
          for sRow in uCur:
          OrigID = sRow[0].split('-')[0] # first element in the Original_ID
          charRng = range(len(OrigID)) # a range to iterate over
          Chars = ''
          Numbers = ''
          for Idx in charRng:
          if OrigID[Idx].isnumeric():
          Numbers += OrigID[Idx]
          else:
          chars += OrigID[Idx]
          sRow[1] = float(Numbers)
          sRow[2] = Chars
          uCur.updateRow(sRow)


          This shows how to break up a string into numbers and not numbers and put the values into a row, it should give you some ideas where to start from.






          share|improve this answer






























            1














            Assuming you have four fields, region, district, place and subdistrict already added and you want to use the field calculator to populate them. You would have to run the calculator four times using an expression like:



            Code Block



            import re
            def parse(s):
            """The format of these codes is [region(letter)][district(number)] - [place(number)][subdistrict(letter)].
            An example of a some codes include S22-201, TT100-12, and V6-1B.
            Often there is no subdistrict, and all points fall within the same larger district
            (so no As or Cs or whatever at the end of the string)."""

            letters = re.findall(r'[a-z A-Z]+', s)
            numbers = re.findall(r'[0-9]+', s)

            region = letters[0]
            district, place = [int(n) for n in numbers]
            try:
            subdistrict = letters[1]
            except IndexError:
            subdistrict = None

            return region, district, place, subdistrict


            Then for the region field, use:



            parse(!Original_ID!)[0]


            For district:



            parse(!Original_ID!)[1]


            For place:



            parse(!Original_ID!)[2]


            For subdistrict:



            parse(!Original_ID!)[3]


            However, I would use the update cursor approach suggested by Michael Stimson so you could update all four fields in one hit. Use the following in the python window of ArcMap/ArcGIS Pro:



            import re 
            def parse(s):
            etc... from code block above

            with arcpy.da.UpdateCursor(YourFeatureClass, ['Original_ID','Region', 'District', 'Place', 'Subdistrict']) as rows:
            for row in rows:
            region, district, place, subdistrict = parse(row[0])
            row = [row[0], region, district, place, subdistrict]
            rows.updateRow(row)





            share|improve this answer
























              Your Answer








              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "79"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f315591%2fsplitting-string-id-code-into-various-parts%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              2














              You're not going to be able to calculate two fields in one go.. though you can split it up into two calcs. I would do this with an update cursor:



              with arcpy.da.UpdateCursor(YourFeatureClass,['Original_ID','District','Split_ID']) as uCur:
              for sRow in uCur:
              OrigID = sRow[0].split('-')[0] # first element in the Original_ID
              charRng = range(len(OrigID)) # a range to iterate over
              Chars = ''
              Numbers = ''
              for Idx in charRng:
              if OrigID[Idx].isnumeric():
              Numbers += OrigID[Idx]
              else:
              chars += OrigID[Idx]
              sRow[1] = float(Numbers)
              sRow[2] = Chars
              uCur.updateRow(sRow)


              This shows how to break up a string into numbers and not numbers and put the values into a row, it should give you some ideas where to start from.






              share|improve this answer



























                2














                You're not going to be able to calculate two fields in one go.. though you can split it up into two calcs. I would do this with an update cursor:



                with arcpy.da.UpdateCursor(YourFeatureClass,['Original_ID','District','Split_ID']) as uCur:
                for sRow in uCur:
                OrigID = sRow[0].split('-')[0] # first element in the Original_ID
                charRng = range(len(OrigID)) # a range to iterate over
                Chars = ''
                Numbers = ''
                for Idx in charRng:
                if OrigID[Idx].isnumeric():
                Numbers += OrigID[Idx]
                else:
                chars += OrigID[Idx]
                sRow[1] = float(Numbers)
                sRow[2] = Chars
                uCur.updateRow(sRow)


                This shows how to break up a string into numbers and not numbers and put the values into a row, it should give you some ideas where to start from.






                share|improve this answer

























                  2












                  2








                  2







                  You're not going to be able to calculate two fields in one go.. though you can split it up into two calcs. I would do this with an update cursor:



                  with arcpy.da.UpdateCursor(YourFeatureClass,['Original_ID','District','Split_ID']) as uCur:
                  for sRow in uCur:
                  OrigID = sRow[0].split('-')[0] # first element in the Original_ID
                  charRng = range(len(OrigID)) # a range to iterate over
                  Chars = ''
                  Numbers = ''
                  for Idx in charRng:
                  if OrigID[Idx].isnumeric():
                  Numbers += OrigID[Idx]
                  else:
                  chars += OrigID[Idx]
                  sRow[1] = float(Numbers)
                  sRow[2] = Chars
                  uCur.updateRow(sRow)


                  This shows how to break up a string into numbers and not numbers and put the values into a row, it should give you some ideas where to start from.






                  share|improve this answer













                  You're not going to be able to calculate two fields in one go.. though you can split it up into two calcs. I would do this with an update cursor:



                  with arcpy.da.UpdateCursor(YourFeatureClass,['Original_ID','District','Split_ID']) as uCur:
                  for sRow in uCur:
                  OrigID = sRow[0].split('-')[0] # first element in the Original_ID
                  charRng = range(len(OrigID)) # a range to iterate over
                  Chars = ''
                  Numbers = ''
                  for Idx in charRng:
                  if OrigID[Idx].isnumeric():
                  Numbers += OrigID[Idx]
                  else:
                  chars += OrigID[Idx]
                  sRow[1] = float(Numbers)
                  sRow[2] = Chars
                  uCur.updateRow(sRow)


                  This shows how to break up a string into numbers and not numbers and put the values into a row, it should give you some ideas where to start from.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Mar 15 at 1:35









                  Michael StimsonMichael Stimson

                  21.6k22460




                  21.6k22460























                      1














                      Assuming you have four fields, region, district, place and subdistrict already added and you want to use the field calculator to populate them. You would have to run the calculator four times using an expression like:



                      Code Block



                      import re
                      def parse(s):
                      """The format of these codes is [region(letter)][district(number)] - [place(number)][subdistrict(letter)].
                      An example of a some codes include S22-201, TT100-12, and V6-1B.
                      Often there is no subdistrict, and all points fall within the same larger district
                      (so no As or Cs or whatever at the end of the string)."""

                      letters = re.findall(r'[a-z A-Z]+', s)
                      numbers = re.findall(r'[0-9]+', s)

                      region = letters[0]
                      district, place = [int(n) for n in numbers]
                      try:
                      subdistrict = letters[1]
                      except IndexError:
                      subdistrict = None

                      return region, district, place, subdistrict


                      Then for the region field, use:



                      parse(!Original_ID!)[0]


                      For district:



                      parse(!Original_ID!)[1]


                      For place:



                      parse(!Original_ID!)[2]


                      For subdistrict:



                      parse(!Original_ID!)[3]


                      However, I would use the update cursor approach suggested by Michael Stimson so you could update all four fields in one hit. Use the following in the python window of ArcMap/ArcGIS Pro:



                      import re 
                      def parse(s):
                      etc... from code block above

                      with arcpy.da.UpdateCursor(YourFeatureClass, ['Original_ID','Region', 'District', 'Place', 'Subdistrict']) as rows:
                      for row in rows:
                      region, district, place, subdistrict = parse(row[0])
                      row = [row[0], region, district, place, subdistrict]
                      rows.updateRow(row)





                      share|improve this answer





























                        1














                        Assuming you have four fields, region, district, place and subdistrict already added and you want to use the field calculator to populate them. You would have to run the calculator four times using an expression like:



                        Code Block



                        import re
                        def parse(s):
                        """The format of these codes is [region(letter)][district(number)] - [place(number)][subdistrict(letter)].
                        An example of a some codes include S22-201, TT100-12, and V6-1B.
                        Often there is no subdistrict, and all points fall within the same larger district
                        (so no As or Cs or whatever at the end of the string)."""

                        letters = re.findall(r'[a-z A-Z]+', s)
                        numbers = re.findall(r'[0-9]+', s)

                        region = letters[0]
                        district, place = [int(n) for n in numbers]
                        try:
                        subdistrict = letters[1]
                        except IndexError:
                        subdistrict = None

                        return region, district, place, subdistrict


                        Then for the region field, use:



                        parse(!Original_ID!)[0]


                        For district:



                        parse(!Original_ID!)[1]


                        For place:



                        parse(!Original_ID!)[2]


                        For subdistrict:



                        parse(!Original_ID!)[3]


                        However, I would use the update cursor approach suggested by Michael Stimson so you could update all four fields in one hit. Use the following in the python window of ArcMap/ArcGIS Pro:



                        import re 
                        def parse(s):
                        etc... from code block above

                        with arcpy.da.UpdateCursor(YourFeatureClass, ['Original_ID','Region', 'District', 'Place', 'Subdistrict']) as rows:
                        for row in rows:
                        region, district, place, subdistrict = parse(row[0])
                        row = [row[0], region, district, place, subdistrict]
                        rows.updateRow(row)





                        share|improve this answer



























                          1












                          1








                          1







                          Assuming you have four fields, region, district, place and subdistrict already added and you want to use the field calculator to populate them. You would have to run the calculator four times using an expression like:



                          Code Block



                          import re
                          def parse(s):
                          """The format of these codes is [region(letter)][district(number)] - [place(number)][subdistrict(letter)].
                          An example of a some codes include S22-201, TT100-12, and V6-1B.
                          Often there is no subdistrict, and all points fall within the same larger district
                          (so no As or Cs or whatever at the end of the string)."""

                          letters = re.findall(r'[a-z A-Z]+', s)
                          numbers = re.findall(r'[0-9]+', s)

                          region = letters[0]
                          district, place = [int(n) for n in numbers]
                          try:
                          subdistrict = letters[1]
                          except IndexError:
                          subdistrict = None

                          return region, district, place, subdistrict


                          Then for the region field, use:



                          parse(!Original_ID!)[0]


                          For district:



                          parse(!Original_ID!)[1]


                          For place:



                          parse(!Original_ID!)[2]


                          For subdistrict:



                          parse(!Original_ID!)[3]


                          However, I would use the update cursor approach suggested by Michael Stimson so you could update all four fields in one hit. Use the following in the python window of ArcMap/ArcGIS Pro:



                          import re 
                          def parse(s):
                          etc... from code block above

                          with arcpy.da.UpdateCursor(YourFeatureClass, ['Original_ID','Region', 'District', 'Place', 'Subdistrict']) as rows:
                          for row in rows:
                          region, district, place, subdistrict = parse(row[0])
                          row = [row[0], region, district, place, subdistrict]
                          rows.updateRow(row)





                          share|improve this answer















                          Assuming you have four fields, region, district, place and subdistrict already added and you want to use the field calculator to populate them. You would have to run the calculator four times using an expression like:



                          Code Block



                          import re
                          def parse(s):
                          """The format of these codes is [region(letter)][district(number)] - [place(number)][subdistrict(letter)].
                          An example of a some codes include S22-201, TT100-12, and V6-1B.
                          Often there is no subdistrict, and all points fall within the same larger district
                          (so no As or Cs or whatever at the end of the string)."""

                          letters = re.findall(r'[a-z A-Z]+', s)
                          numbers = re.findall(r'[0-9]+', s)

                          region = letters[0]
                          district, place = [int(n) for n in numbers]
                          try:
                          subdistrict = letters[1]
                          except IndexError:
                          subdistrict = None

                          return region, district, place, subdistrict


                          Then for the region field, use:



                          parse(!Original_ID!)[0]


                          For district:



                          parse(!Original_ID!)[1]


                          For place:



                          parse(!Original_ID!)[2]


                          For subdistrict:



                          parse(!Original_ID!)[3]


                          However, I would use the update cursor approach suggested by Michael Stimson so you could update all four fields in one hit. Use the following in the python window of ArcMap/ArcGIS Pro:



                          import re 
                          def parse(s):
                          etc... from code block above

                          with arcpy.da.UpdateCursor(YourFeatureClass, ['Original_ID','Region', 'District', 'Place', 'Subdistrict']) as rows:
                          for row in rows:
                          region, district, place, subdistrict = parse(row[0])
                          row = [row[0], region, district, place, subdistrict]
                          rows.updateRow(row)






                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Mar 15 at 4:23

























                          answered Mar 15 at 4:03









                          user2856user2856

                          30.5k258106




                          30.5k258106



























                              draft saved

                              draft discarded
















































                              Thanks for contributing an answer to Geographic Information Systems Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid


                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.

                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f315591%2fsplitting-string-id-code-into-various-parts%23new-answer', 'question_page');

                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Solar Wings Breeze Design and development Specifications (Breeze) References Navigation menu1368-485X"Hang glider: Breeze (Solar Wings)"e

                              Kathakali Contents Etymology and nomenclature History Repertoire Songs and musical instruments Traditional plays Styles: Sampradayam Training centers and awards Relationship to other dance forms See also Notes References External links Navigation menueThe Illustrated Encyclopedia of Hinduism: A-MSouth Asian Folklore: An EncyclopediaRoutledge International Encyclopedia of Women: Global Women's Issues and KnowledgeKathakali Dance-drama: Where Gods and Demons Come to PlayKathakali Dance-drama: Where Gods and Demons Come to PlayKathakali Dance-drama: Where Gods and Demons Come to Play10.1353/atj.2005.0004The Illustrated Encyclopedia of Hinduism: A-MEncyclopedia of HinduismKathakali Dance-drama: Where Gods and Demons Come to PlaySonic Liturgy: Ritual and Music in Hindu Tradition"The Mirror of Gesture"Kathakali Dance-drama: Where Gods and Demons Come to Play"Kathakali"Indian Theatre: Traditions of PerformanceIndian Theatre: Traditions of PerformanceIndian Theatre: Traditions of PerformanceIndian Theatre: Traditions of PerformanceMedieval Indian Literature: An AnthologyThe Oxford Companion to Indian TheatreSouth Asian Folklore: An Encyclopedia : Afghanistan, Bangladesh, India, Nepal, Pakistan, Sri LankaThe Rise of Performance Studies: Rethinking Richard Schechner's Broad SpectrumIndian Theatre: Traditions of PerformanceModern Asian Theatre and Performance 1900-2000Critical Theory and PerformanceBetween Theater and AnthropologyKathakali603847011Indian Theatre: Traditions of PerformanceIndian Theatre: Traditions of PerformanceIndian Theatre: Traditions of PerformanceBetween Theater and AnthropologyBetween Theater and AnthropologyNambeesan Smaraka AwardsArchivedThe Cambridge Guide to TheatreRoutledge International Encyclopedia of Women: Global Women's Issues and KnowledgeThe Garland Encyclopedia of World Music: South Asia : the Indian subcontinentThe Ethos of Noh: Actors and Their Art10.2307/1145740By Means of Performance: Intercultural Studies of Theatre and Ritual10.1017/s204912550000100xReconceiving the Renaissance: A Critical ReaderPerformance TheoryListening to Theatre: The Aural Dimension of Beijing Opera10.2307/1146013Kathakali: The Art of the Non-WorldlyOn KathakaliKathakali, the dance theatreThe Kathakali Complex: Performance & StructureKathakali Dance-Drama: Where Gods and Demons Come to Play10.1093/obo/9780195399318-0071Drama and Ritual of Early Hinduism"In the Shadow of Hollywood Orientalism: Authentic East Indian Dancing"10.1080/08949460490274013Sanskrit Play Production in Ancient IndiaIndian Music: History and StructureBharata, the Nāṭyaśāstra233639306Table of Contents2238067286469807Dance In Indian Painting10.2307/32047833204783Kathakali Dance-Theatre: A Visual Narrative of Sacred Indian MimeIndian Classical Dance: The Renaissance and BeyondKathakali: an indigenous art-form of Keralaeee

                              Method to test if a number is a perfect power? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern)Detecting perfect squares faster than by extracting square rooteffective way to get the integer sequence A181392 from oeisA rarely mentioned fact about perfect powersHow many numbers such $n$ are there that $n<100,lfloorsqrtn rfloor mid n$Check perfect squareness by modulo division against multiple basesFor what pair of integers $(a,b)$ is $3^a + 7^b$ a perfect square.Do there exist any positive integers $n$ such that $lfloore^nrfloor$ is a perfect power? What is the probability that one exists?finding perfect power factors of an integerProve that the sequence contains a perfect square for any natural number $m $ in the domain of $f$ .Counting Perfect Powers