Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Check if parameter in string is followed by a specific letter – python

I found a similar answer for this but only in java. Here is an example of my code at the moment:

def find_x(phrase, target):
  i=phrase.find(target)
  if 'x' in phrase[i+1]:
    return True
  else:
    return False

I then realized in the case the phrase is ‘Texas’ and the target is ‘Te’ the find function will only give the index of the first letter of the first occurrence of the target. Therefore when it checks if the next letter is ‘x’ it will be part of the target returning False instead of True. Let me know if there is a way to get around this issue, thanks!

Edit: SOLUTION FOUND!!! Thank you for John Gordon for starting me off on the right track and the cool programmer who simply realized I should create a check also. Thanks (:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Building on the suggestion in the comments to check for target + 'x' in phrase, you could just make that check and then also check that it’s in the same spot as the first occurrence of target:

>>> def find_x(phrase, target):
...     return target + 'x' in phrase and phrase.find(target) == phrase.find(target + 'x')
...
>>> find_x('Texas', 'Te')
True
>>> find_x('TeTexas', 'Te')
False

The option of explicitly looking for the first occurrence of target and then checking the character immediately after it is more efficient, since it only requires one scan through phrase. You just want to catch the potential IndexError or ValueError and return False instead of raising.

>>> def find_x(phrase, target):
...     try:
...         return phrase[phrase.index(target) + len(target)] == 'x'
...     except (IndexError, ValueError):
...         return False
...
>>> find_x('Texas', 'Te')
True
>>> find_x('TeTexas', 'Te')
False
>>> find_x('Te', 'Te')  # this is the case that'll raise IndexError
False
>> find_x('Texas', 'Tee')  # this is the case that'll raise ValueError
False
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading