Reputation: 16553
Is there a way to search, from a string, a line containing another string and retrieve the entire line?
For example:
string = """
qwertyuiop
asdfghjkl
zxcvbnm
token qwerty
asdfghjklf
""";
retrieve_line("token") = "token qwerty"
Upvotes: 42
Views: 189669
Reputation: 343211
you mentioned "entire line" , so i assumed mystring is the entire line.
if "token" in mystring:
print(mystring)
however if you want to just get "token qwerty",
>>> mystring="""
... qwertyuiop
... asdfghjkl
...
... zxcvbnm
... token qwerty
...
... asdfghjklñ
... """
>>> for item in mystring.split("\n"):
... if "token" in item:
... print (item.strip())
...
token qwerty
Upvotes: 58
Reputation: 523
items=re.findall("token.*$",s,re.MULTILINE)
>>> for x in items:
you can also get the line if there are other characters before token
items=re.findall("^.*token.*$",s,re.MULTILINE)
The above works like grep token on unix and keyword 'in' or .contains in python and C#
s='''
qwertyuiop
asdfghjkl
zxcvbnm
token qwerty
asdfghjklñ
'''
http://pythex.org/ matches the following 2 lines
....
....
token qwerty
Upvotes: 9
Reputation: 123927
With regular expressions
import re
s="""
qwertyuiop
asdfghjkl
zxcvbnm
token qwerty
asdfghjklñ
"""
>>> items=re.findall("token.*$",s,re.MULTILINE)
>>> for x in items:
... print x
...
token qwerty
Upvotes: 11
Reputation: 53294
If you prefer a one-liner:
matched_lines = [line for line in my_string.split('\n') if "substring" in line]
Upvotes: 40