On Tue, 29 Mar 2022 at 18:13, StrikerOmega <oddochentaycinco...@gmail.com> wrote: > > The grab function would find the index of the first occurrence of the "start" > string in the parent string and then the next occurrence of the "end" string > starting from that index and return the substring between those. >
This sounds like a really good job for preparsing. Take your string, parse it according to your rules, and build a list or dict of the cooked results. Then you can look up in that very easily and efficiently. Going back to the string every time tends to be inefficient, but a single pass that gives you a convenient lookup table is both easier to work with and easier to execute. In your example: sample=""" fruit:apple tree:[Apple tree] quantity:{5} quantity:{3} """ I'd start by splitting it into lines, then for each line, partitioning it on the colon, thus giving you a keyword and a value. (I'm not sure what it means to have quantity 5 and quantity 3, but I'm sure you'd define that in some way - maybe first one wins, or last one wins, or build a list of all the values, whatever makes sense.) You could end up with something like: { "fruit": "apple", "tree": "Apple tree", "quantity": ... } depending on how you resolve the conflict. Python is an excellent language for text processing; you have a wide variety of pretty cool tools available. ChrisA _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/OLJRRLAGOKY74SPWEK3B47QKDUMHGEZI/ Code of Conduct: http://python.org/psf/codeofconduct/