Hi Andreas
>Do you really need to load all the stuff into RAM?
No...I was originally using in/out
and will go back to trying that for each filter.

re the improvements...yes I understand all all of those...thank you.
>exactly the same structure as in ram.
Amazing and I'll bear that in mind.

>I hope this helps...
Yes it does and thank you very much

Hi Joe
>1. Your picolisp code is becoming easier to read.
That's very kind...thank you...I am trying :)

>3. Why do you need to work with bytes vs chars?
Good question...Initially I have some >130 asci characters.
Reading them as such is problematic but viewing them as bytes
and changing those >asci 130 solves the problem.
As the data is in bytes after such conversion I thought it might be
more efficient to keep them that way but after
your question,
Rosetta Code example
and Andreas' advice re confining things to in/out
...maybe not.
I'll have a go trying to incorporate the above advice and example
and report back. It might take me a while.

Thank you both very much for your help.
Best Regards

On 21 February 2017 at 13:14, Joe Bogner <joebog...@gmail.com> wrote:

> After trying to figure it out myself for a few minutes, I remembered to
> check rosettacode (wonderful resource). This is probably close to what you
> need: http://rosettacode.org/wiki/Globally_replace_text_in_
> several_files#PicoLisp
> On Tue, Feb 21, 2017 at 8:08 AM, Joe Bogner <joebog...@gmail.com> wrote:
>> Hi dean,
>> I experimented with this problem for a few minutes and didn't come up
>> with anything worth posting. A few comments though:
>> 1. Your picolisp code is becoming easier to read. Nice work!
>> 2. My initial thought was to split the input into words and replace
>> sublists, however it looks like you don't have a word delimiter (typically
>> a space)...Since you need to be able to substitute "fl ow" with "flow". As
>> a result, the best I came up with is something similar (looping through
>> characters and testing the replacement)
>> 3. Why do you need to work with bytes vs chars?  (mapcar char (chop
>> Sfrom)) ?
>> On Tue, Feb 21, 2017 at 3:37 AM, dean <deangwillia...@gmail.com> wrote:
>>> I need to globally replace certain words in a text file and because
>>> I need to process it a byte at a time initially...I'm inputting
>>> processed list of bytes into the global replace function "lchg"
>>> (and others) like this.
>>> (lbytes_to_fl Cleaned_txt_pth
>>>    (lchg "fl ow" "flow"
>>>        (fltr2
>>>            (fltr1
>>>                 (fl_to_lbytes Txt_pth)))))
>>> The other filters seem ok but this one is slow (most likely my
>>> algorithm/general approach :)) and any help to
>>> speed things up would be much appreciated.
>>> (de lchg (Sfrom Sto Lbytes)
>>>    (make
>>>       (let
>>>          (X 0
>>>             B NIL
>>>             Lfrom (mapcar char (chop Sfrom))
>>>             Lto (mapcar char (chop Sto))
>>>             First_from_ch (car Lfrom)
>>>             Len_from-1 (- (length Lfrom) 1)
>>>             Len_lbytes (length Lbytes) )
>>>          (until (<= (length Lbytes) X)
>>>             (inc 'X)
>>>             (setq B (get Lbytes X))
>>>             (if (= B First_from_ch)
>>>                (prog
>>>                   (if (= (slice Lbytes X (+ X Len_from-1)) Lfrom)
>>>                      (prog
>>>                         (for MatchB Lto
>>>                            (link MatchB) )
>>>                         (inc 'X Len_from-1) )
>>>                      (link B) ) )
>>>                (link B) ) ) ) ) )
>>>    (de slice (Lst I K) (head (inc (- K I)) (nth Lst I)) ) #99
>>> Here's "lchg" in action...
>>> : (setq L (chop "ab fl ow flow fl ow yz"))
>>> -> ("a" "b" " " "f" "l" " " "o" "w" " " "f" "l" "o" "w" " " "f" "l" " "
>>> "o" "w" " " "y" "z")
>>> : (pack (mapcar char (lchg "fl ow" "flow" (mapcar char L))))
>>> -> "ab flow flow flow yz"

Reply via email to