Python Forum
Identifying string success flag
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Identifying string success flag
#1
Hi Guys,

I have a string of text seperated by a pipe symbol like:

# a list of flags to look for on success ...
submit_success = "TEXT_1|TEXT_2|TEXT_3|etc"

# if a flag is found do our routines ...
if any(s in self.driver.page_source for s in submit_success.split('|')):
    # run this code once a submit_success flag is found
Once one of those TEXT strings is found in the html we mark it as a success.

What i'm having trouble with is, how can i find out which of the "submit_success" flags was found?

Any help would be appreciated.

cheers
Reply
#2
If you can be sure that submit_success only contains relevant flags, and nothing you're not interested in, you can just use the split string. Otherwise, you could use a set:

valid_flags = set('a|e|i|o|u'.split('|'))
current_flags = 'c|r|a|i|g'
matched_flags = valid_flags.intersection(current_flags.split('|')) # will be set(['a', 'i'])
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#3
built in any function only returns a boolean. As is i dont believe there is a way within the builtin to return the matches. Thus you would have to build your own any function that returns the matches.
Recommended Tutorials:
Reply
#4
(Aug-13-2019, 05:07 PM)graham23s Wrote: What i'm having trouble with is, how can i find out which of the "submit_success" flags was found?
If you want to keep track of an intermediate value, using any() might not be the best, since the assumption is that it's a side-effect free operation. It doesn't have to be side-effect free, you just need to put a little effort into getting it to work.

>>> class ValueFinder:
...   def __init__(self, callback):
...     self.callback = callback
...     self.match = None
...     self.match_found = False
...   def __call__(self, test):
...     if self.callback(test):
...       self.match = test
...       self.match_found = True
...     return self.match_found
...
>>> submit_success = "TEXT_1|TEXT_2|TEXT_3|etc".split("|")
>>> page_source = '''one fish, TEXT_2 fish, red fish, blue fish'''
>>> finder = ValueFinder(lambda x: x in page_source)
>>> if any(finder(s) for s in submit_success):
...   print(finder.match)
...
TEXT_2
Or, instead of using any(), you could roll your own:
>>> submit_success = "TEXT_1|TEXT_2|TEXT_3|etc".split("|")
>>> page_source = '''one fish, TEXT_2 fish, red fish, blue fish'''
>>> def first(test, seq):
...   for item in seq:
...     if test(item):
...       return item
...   return None
...
>>> match = first(lambda s: s in page_source, submit_success)
>>> if match:
...   print(match)
...
TEXT_2
Once python 3.8 is out, you could also use the walrus operator to do this:
submit_success = "TEXT_1|TEXT_2|TEXT_3|etc"

if any((match := s) in self.driver.page_source for s in submit_success.split('|')):
    # "match" is the TEXT_ value that matched
Reply
#5
Thank you very much guys! solved the issue using your help. Python 3.8 does look good :)
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Identifying if the program I have is python and then decompiling jpnyc 7 2,226 Jun-02-2022, 10:16 PM
Last Post: jpnyc
  Identifying keywords in text drchips 6 80,441 Mar-29-2022, 12:32 PM
Last Post: snippsat
Big Grin Variable flag vs code outside of for loop?(Disregard) cubangt 2 1,130 Mar-16-2022, 08:54 PM
Last Post: cubangt
  trying to put a a filter on identifying a straight CompleteNewb 1 1,637 Dec-01-2021, 11:11 PM
Last Post: CompleteNewb
  how to check for thread kill flag nanok66 1 2,148 May-09-2020, 10:06 PM
Last Post: nanok66
  Check for a special characters in a column and flag it ayomayam 0 2,017 Feb-12-2020, 03:04 PM
Last Post: ayomayam
  Using a flag error blackjesus24 1 1,578 Jan-30-2020, 09:42 AM
Last Post: buran
  Practicing using a "flag": please point in right direction magsloo 5 3,035 May-10-2019, 04:58 AM
Last Post: perfringo
  How to make an activation flag? Krszt 4 3,234 Oct-11-2018, 09:39 PM
Last Post: nilamo
  identifying a dictionary with an attribute? Skaperen 7 3,693 Oct-04-2018, 05:48 AM
Last Post: Skaperen

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020