• Login
Community
  • Login

another replacement request for help

Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
40 Posts 4 Posters 4.7k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E
    Ekopalypse
    last edited by Aug 21, 2020, 3:23 PM

    I’m sure the regex gurus here are able to find a solution based on regex
    only but I, personally, would use the python script plugin and this script

    from Npp import editor1, editor2
    
    replacements = dict(line.split('\t') for line in editor2.getText().splitlines() if line)
    
    def replace_with(m):
        return replacements[m.group()]
    
    editor1.rereplace('(?<=<UWI>).+?(?=</UWI>)', replace_with)
    

    Having the data in both views like

    ef26dc76-89cf-4fbe-b8a2-4a414ce72743-image.png

    and running the script will result in, I hope, the expected result.

    e22aa8ca-f9c8-45df-980a-6ee3de6c90d7-image.png

    C 1 Reply Last reply Aug 21, 2020, 3:48 PM Reply Quote 3
    • C
      Carlos J. Segnini R. @Ekopalypse
      last edited by Aug 21, 2020, 3:48 PM

      @Ekopalypse thanks so much!
      I wish I could try it, but now I am banging my head to install the plugin, as the firewall is blocking my download… No luck today.

      E 1 Reply Last reply Aug 21, 2020, 3:53 PM Reply Quote 0
      • E
        Ekopalypse @Carlos J. Segnini R.
        last edited by Aug 21, 2020, 3:53 PM

        @Carlos-J-Segnini-R

        :-) those network admins … :-)
        I don’t know how strict your rules are but maybe a solution would be to download it from github directly?

        C 1 Reply Last reply Aug 21, 2020, 3:54 PM Reply Quote 0
        • C
          Carlos J. Segnini R. @Ekopalypse
          last edited by Aug 21, 2020, 3:54 PM

          @Ekopalypse said in another replacement request for help:

          @Carlos-J-Segnini-R

          :-) those network admins … :-)
          I don’t know how strict your rules are but maybe a solution would be to download it from github directly?

          Yeah, got it now. Had to write my user and password a hundred times, but it is installed. I am testing it now

          1 Reply Last reply Reply Quote 0
          • C
            Carlos J. Segnini R.
            last edited by Aug 21, 2020, 4:10 PM

            @Ekopalypse I want to be like you when I grow up :)
            It worked like a charm, and faster than any regex I would believe.
            Thanks so much
            Regards

            1 Reply Last reply Reply Quote 3
            • E
              Ekopalypse
              last edited by Aug 21, 2020, 4:58 PM

              I want to be like you when I grow up

              LOL - be careful with your wishes sometimes they come true :-D

              1 Reply Last reply Reply Quote 0
              • C
                Carlos J. Segnini R.
                last edited by Aug 21, 2020, 6:56 PM

                haha thanks.
                May I ask another question?
                What if I needed to change another field as well?
                For example in the image below:
                39e1a109-e611-4d7d-a037-6a47ecf46181-image.png
                I find the name Aery #B1H in the file but then I need to change the Welltype from Oil to Gas (Or viceversa).
                In this case the I would not be replacing the searched word (Aery #B1H), but another field occurring later in the same entry (<Welltype>Oil to Gas)
                Thanks again

                E 1 Reply Last reply Aug 21, 2020, 8:07 PM Reply Quote 0
                • E
                  Ekopalypse @Carlos J. Segnini R.
                  last edited by Aug 21, 2020, 8:07 PM

                  @Carlos-J-Segnini-R

                  I would think this is a find/replace action.
                  Find: <UWI>Aery #B1H</UWI>\R\h*<WellType>\K.+?(?=</WellType>)
                  Replace:Gas
                  tick regular expression

                  Because of the usage of the \K syntax you can only use replace all button.

                  C 1 Reply Last reply Aug 21, 2020, 8:28 PM Reply Quote 2
                  • C
                    Carlos J. Segnini R. @Ekopalypse
                    last edited by Aug 21, 2020, 8:28 PM

                    @Ekopalypse said in another replacement request for help:

                    \R\h

                    Thanks It works, but I would need to do one by one.
                    Again I would have a list of different names (Aery #B1H, Aery #D2H, etc) so I was looking for another magic script haha

                    E 1 Reply Last reply Aug 21, 2020, 8:30 PM Reply Quote 0
                    • E
                      Ekopalypse @Carlos J. Segnini R.
                      last edited by Aug 21, 2020, 8:30 PM

                      @Carlos-J-Segnini-R

                      but then we would need some kind of mapping again,
                      otherwise the script does not know when to use what. :-)

                      1 Reply Last reply Reply Quote 0
                      • C
                        Carlos J. Segnini R.
                        last edited by Aug 21, 2020, 8:37 PM

                        So this is how the xml file looks
                        e6afaf3a-b1ef-4205-bb9c-515f61d7122f-image.png
                        <Well replace=“false”>
                        <UWI>Alexander Gas Unit 1 #2</UWI>
                        <WellType>Oil</WellType>
                        <ReserveStatusCollection>
                        <Working>
                        <PrimaryProduct>Oil</PrimaryProduct>
                        <WellResCatCollection>

                        and this is how the replacement file would be
                        7c50836c-5aa4-47e1-ac7e-26568264fb30-image.png
                        7dda6e13-179d-4e43-b772-a88ae007c825-image.png
                        Alexander Gas Unit 1 #2 Oil Gas
                        Alexander - Wessendorff 1 A3H Oil Gas
                        Alexander - Wessendorff 1 A4H Oil Gas

                        So the script would look for the first column (Well name), and then replace the word in the second column for the one in the third column:

                        <WellType>Oil</WellType> to <WellType>Gas</WellType>

                        Thanks again, you’re saving my life

                        E 1 Reply Last reply Aug 21, 2020, 9:03 PM Reply Quote 0
                        • E
                          Ekopalypse @Carlos J. Segnini R.
                          last edited by Aug 21, 2020, 9:03 PM

                          @Carlos-J-Segnini-R

                          Is the oil column really needed?
                          I mean, does it needs to be checked or can the script always look for company and then replace whatever is in WellType with the value from the Gas column?

                          1 Reply Last reply Reply Quote 1
                          • C
                            Carlos J. Segnini R.
                            last edited by Carlos J. Segnini R. Aug 21, 2020, 9:06 PM Aug 21, 2020, 9:05 PM

                            Edit:
                            Thinking about, no, no need for that column

                            E 4 Replies Last reply Aug 21, 2020, 9:06 PM Reply Quote 0
                            • E
                              Ekopalypse @Carlos J. Segnini R.
                              last edited by Aug 21, 2020, 9:06 PM

                              This post is deleted!
                              1 Reply Last reply Reply Quote 0
                              • E
                                Ekopalypse @Carlos J. Segnini R.
                                last edited by Aug 21, 2020, 9:08 PM

                                @Carlos-J-Segnini-R

                                so you can get rid of the second column and the only thing we need to change is the find expression, I guess.

                                1 Reply Last reply Reply Quote 1
                                • E
                                  Ekopalypse @Carlos J. Segnini R.
                                  last edited by Aug 21, 2020, 9:12 PM

                                  @Carlos-J-Segnini-R

                                  from Npp import editor1, editor2
                                  
                                  replacements = dict(line.split('\t') for line in editor2.getText().splitlines() if line)
                                  
                                  def replace_with(m):
                                      return replacements[m.group(1)]
                                  
                                  # search_for = '(?<=<UWI>).+?(?=</UWI>)'
                                  search_for = '<UWI>(.+)</UWI>\R\h*<WellType>\K.+?(?=</WellType>)'
                                  editor1.rereplace(search_for, replace_with)
                                  
                                  1 Reply Last reply Reply Quote 2
                                  • E
                                    Ekopalypse @Carlos J. Segnini R.
                                    last edited by Aug 21, 2020, 9:17 PM

                                    @Carlos-J-Segnini-R

                                    btw. if you are interested how these regex search work see here for a pretty good description.

                                    1 Reply Last reply Reply Quote 2
                                    • C
                                      Carlos J. Segnini R.
                                      last edited by Aug 21, 2020, 9:41 PM

                                      Thanks again for your help.
                                      For some reason this time it isn’t working.
                                      I will try and fix it.

                                      a4f54196-4f8f-444f-a7b7-15048ba35f66-image.png

                                      E 1 Reply Last reply Aug 21, 2020, 9:47 PM Reply Quote 0
                                      • E
                                        Ekopalypse @Carlos J. Segnini R.
                                        last edited by Aug 21, 2020, 9:47 PM

                                        @Carlos-J-Segnini-R

                                        Can you open the PythonScript console (plugin->PythonScript->Show Console) to see if there is an error?
                                        The replacement file has company and gas/oil tab separated, correct?

                                        C 1 Reply Last reply Aug 21, 2020, 9:50 PM Reply Quote 0
                                        • C
                                          Carlos J. Segnini R. @Ekopalypse
                                          last edited by Carlos J. Segnini R. Aug 21, 2020, 9:51 PM Aug 21, 2020, 9:50 PM

                                          @Ekopalypse here is the log.
                                          I think it is because not all the wells need to be changed, so the first one in the file (Aery #B1H) does not appear in the second file, so the script is stopping. I will try leaving all wells, even those that doesnt need to be changed

                                          Traceback (most recent call last):
                                          File “C:\Users\AppData\Roaming\Notepad++\plugins\Config\PythonScript\scripts\find_replace.py”, line 10, in <module>
                                          editor1.rereplace(search_for, replace_with)
                                          File “C:\Users\AppData\Roaming\Notepad++\plugins\Config\PythonScript\scripts\find_replace.py”, line 6, in replace_with
                                          return replacements[m.group(1)]
                                          KeyError: ‘Aery #B1H’

                                          And yes, the other file is separated by tabs.

                                          E 3 Replies Last reply Aug 21, 2020, 9:52 PM Reply Quote 0
                                          13 out of 40
                                          • First post
                                            13/40
                                            Last post
                                          The Community of users of the Notepad++ text editor.
                                          Powered by NodeBB | Contributors