Community
    • Login

    Massive list and massive search and replace?

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    23 Posts 7 Posters 7.5k 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.
    • Alan KilbornA
      Alan Kilborn @Terry R
      last edited by

      @Terry-R said in Massive list and massive search and replace?:

      And whilst @Alan-Kilborn has used a TSV (tab separated value) file

      Actually it isn’t a “tab”, although I can see why you’d think that. I chose - followed by > as the delimiter. The delimiter is specifically variable-ized in the script, so one could easily change it to whatever is desired.

      1 Reply Last reply Reply Quote 3
      • Alan KilbornA
        Alan Kilborn @Calvin Foo
        last edited by

        @Calvin-Foo said in Massive list and massive search and replace?:

        Is it possible to simplify it just to read an Excel page, find A2 replace it with B2 for every text files are opened in NPP?

        I suppose it IS possible, but not by me.
        The intent of the script was to solve kind of a general case problem, in a general way.
        Of course anyone can treat it as a demo, and feel free to modify it at will.

        1 Reply Last reply Reply Quote 3
        • Calvin FooC
          Calvin Foo
          last edited by

          I guess I need to learn from ground up. I only have experience in writing ASP 3.0. and SQL Server.

          I guess I just start from there

          Maybe anyone can give me a simple guide on How to write a simple replace text script? I’ll further study from there and include a list of text (maybe import from CSV)

          Neil SchipperN Alan KilbornA 2 Replies Last reply Reply Quote 0
          • Neil SchipperN
            Neil Schipper @Calvin Foo
            last edited by Neil Schipper

            @Calvin-Foo

            There’s very, very, very little to learn. First, follow the instructions in Alan’s second post to you (“REFERENCE” link) LIKE A MONKEY.

            Here’s a first script you can run:

            #! python
            import sys
            print "Old style print syntax"
            sys.stdout.write("Calvin-Foo's first script -- hello from Python %s\n" % (sys.version,))
            

            You don’t need to know what any of the lines mean or what they do. (Once you get it running, you can hack at it for fun).

            There’s a lot complexity in airplanes and elevators and keyboards and phones that you don’t see and don’t need to deal with. It’s really quite similar.

            1 Reply Last reply Reply Quote 1
            • Alan KilbornA
              Alan Kilborn @Calvin Foo
              last edited by Alan Kilborn

              @Calvin-Foo said in Massive list and massive search and replace?:

              I guess I need to learn from ground up.
              I guess I just start from thereI’ll further study from there and include a list of text (maybe import from CSV)

              In case it isn’t obvious, you could take YOUR data, in whatever (textual) format, and use Notepad++ to change it with a replacement operation into MY demo format, and then just run with the demo solution.

              This avoids programming and could (probably) be made into a N++ macro for easy repetitive running.

              As an example, take your original problem statement data (I know it isn’t your real data, but we have none of that here, so…):

              1. james - James
              2. calvin - Calvin
              3. new york - New York
              

              You could change that into the needed input format for the script by this operation:

              Find: (?-s)^\d+\. (.+?) - (.+)
              Replace: ${1}->${2}
              Search mode: Regular expression
              Wrap around: Checked
              Action: Replace All button

              After the replace-all, your data would then look like this:

              james->James
              calvin->Calvin
              new york->New York
              

              which would be a direct feed-in to the demo script.


              this seems a bit too complicated for me

              Of course, this data transform may involve learning some regular expressions (don’t know your expertise), but I don’t think it is too much to ask people that request a moderately-complex solution to a problem to do some sort of learning of their own along the way.


              How to write a simple replace text script?

              Well about the simplest one I can think of would be a one-liner:

              editor.replace('apple', 'Apple')

              1 Reply Last reply Reply Quote 2
              • Alan KilbornA Alan Kilborn referenced this topic on
              • Alan KilbornA Alan Kilborn referenced this topic on
              • Alan KilbornA Alan Kilborn referenced this topic on
              • fenzek1F fenzek1 referenced this topic on
              • nerdyone255N
                nerdyone255
                last edited by

                this script is FANTASTIC.

                i do have a question though- in the final output it prints how many replacements were made, but is there any way to see what the actual replacements were?

                looking into the code i see

                “”" if self.num_repl_made_in_this_file > 0:

                                self.print('replacing "{fw}" with "{rw}" {n} times'.format(
                                    fw=find_what, rw=replace_with, n=self.num_repl_made_in_this_file)) """
                

                but i dont see where that would get printed- it doesnt show up in the python console either

                again huge thanks for this one

                Alan KilbornA 1 Reply Last reply Reply Quote 0
                • Alan KilbornA
                  Alan Kilborn @nerdyone255
                  last edited by Alan Kilborn

                  @nerdyone255 said :

                  this script is FANTASTIC.

                  Well…glad you like it.

                  but i dont see where that would get printed- it doesnt show up in the python console either

                  The self.print() function calls are really meant as debug helpers while testing the script. Thus, in the version of the script above, they don’t do anything because the debug variable is set to False. If you change the 0 to a 1 in this line:

                  self.debug = True if 0 else False

                  or simply change it to:

                  self.debug = True

                  then the output of the self.print() calls will go to the PythonScript console window. You’ll see the output you indicated you were interested, plus output from other things that happen while the script is running.

                  nerdyone255N 1 Reply Last reply Reply Quote 2
                  • nerdyone255N
                    nerdyone255 @Alan Kilborn
                    last edited by

                    @Alan-Kilborn perfect!

                    1 Reply Last reply Reply Quote 1
                    • Alan KilbornA Alan Kilborn referenced this topic on
                    • Yurble VươngY
                      Yurble Vương @Alan Kilborn
                      last edited by PeterJones

                      @Alan-Kilborn

                      Thanks Alan, it work perfectly, Except one specially for me. Appreciate your help if possible:

                      I want to find only within word boundary.


                      For example:
                      Sentence: You are eating apple. The tree have a lot of apples. all the apples is green.
                      apple->cherry
                      apples->cherries


                      Hence, how can I add in a code to made it change only words start or end a transition from space to non-space character (space, common, dot, quote marks, questions mark…).

                      thanks in advance
                      Yurble

                      Alan KilbornA 1 Reply Last reply Reply Quote 0
                      • Alan KilbornA
                        Alan Kilborn @Yurble Vương
                        last edited by

                        @Yurble-Vương said in Massive list and massive search and replace?:

                        how can I add in a code to made it change only words start or end a transition from space to non-space character

                        You can use \b in the regular expression to insist upon a word boundary; example: \bapple will match have an apple today but will not match have a crabapple today.

                        Yurble VươngY 2 Replies Last reply Reply Quote 1
                        • Yurble VươngY
                          Yurble Vương @Alan Kilborn
                          last edited by

                          This post is deleted!
                          1 Reply Last reply Reply Quote 0
                          • Yurble VươngY
                            Yurble Vương @Alan Kilborn
                            last edited by Yurble Vương

                            @Alan-Kilborn

                            Sorry to ask and bother you. I tried to edit your py code as below, but it seems to be a wrong code. Could you advise how to correct:

                            Not work:

                                 # FINALLY, the actual replacement!
                                            editor.rereplace('\b'+find_what+'\b', replace_with)
                            

                            Not work 2:

                                 # FINALLY, the actual replacement!
                                            editor.rereplace(r'\b'+find_what+'\b', replace_with)
                            
                            Alan KilbornA 1 Reply Last reply Reply Quote 1
                            • Alan KilbornA
                              Alan Kilborn @Yurble Vương
                              last edited by

                              @Yurble-Vương said :

                              Not work 2

                              This should work: editor.rereplace(r'\b'+find_what+r'\b', replace_with)

                              I like how you showed initiative in trying to solve the problem yourself…and you had the right idea, you just didn’t take it far enough.

                              Yurble VươngY 1 Reply Last reply Reply Quote 1
                              • Yurble VươngY
                                Yurble Vương @Alan Kilborn
                                last edited by

                                @Alan-Kilborn

                                Many thanks for help

                                1 Reply Last reply Reply Quote 0
                                • Alan KilbornA Alan Kilborn referenced this topic on
                                • First post
                                  Last post
                                The Community of users of the Notepad++ text editor.
                                Powered by NodeBB | Contributors