Wednesday, 2 November 2016

python - Finding the position of words in a string





My Task



I am trying to find the position of words appearing in a string using regex



Code




import re

# A random string

mystr = "there not what is jake can do for you ask what you play do for spare jake".upper()

match = re.search(r"[^a-zA-Z](jake)[^a-zA-Z]", mystr)

print match.start(1)



Output



18


Expected output



I would expect my output to contain the positions of the string jake:




5, 17


EDIT:
To clarify, I'm trying to identify the position of words. I believe what I have done is found the index and am unsure how to make it work as I expect


Answer



To get the "ordinal" positions of search string jake in the input string use the following approach:



mystr = "there not what is jake can do for you ask what you play do for spare jake"

search_str = 'jake'

result = [i+1 for i,w in enumerate(mystr.split()) if w.lower() == search_str]
print(result)


The output:



[5, 17]







  • enumerate(mystr.split()) - to get enumerated object (pairs of items with their positions/indices)


  • w.lower() == search_str - if a word is equal to search string



No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...