web-dev-qa-db-fra.com

Recherchez et obtenez une ligne dans Python

Existe-t-il un moyen de rechercher, à partir d'une chaîne, une ligne contenant une autre chaîne et de récupérer la ligne entière?

Par exemple:

string = 
    qwertyuiop
    asdfghjkl

    zxcvbnm
    token qwerty

    asdfghjklñ

retrieve_line("token") = "token qwerty"
18
Ben

vous avez mentionné "toute la ligne", donc j'ai supposé que mystring est la ligne entière.

if "token" in mystring:
    print mystring

cependant si vous voulez juste obtenir "token qwerty",

>>> mystring="""
...     qwertyuiop
...     asdfghjkl
...
...     zxcvbnm
...     token qwerty
...
...     asdfghjklñ
... """
>>> for item in mystring.split("\n"):
...  if "token" in item:
...     print item.strip()
...
token qwerty
33
ghostdog74

Si vous préférez un monoplace:

matched_lines = [line for line in my_string.split('\n') if "substring" in line]
26
Mark Lodato
items=re.findall("token.*$",s,re.MULTILINE)
>>> for x in items:

vous pouvez également obtenir la ligne s'il y a d'autres caractères avant le jeton

items=re.findall("^.*token.*$",s,re.MULTILINE)

Ce qui précède fonctionne comme un jeton grep sur unix et le mot clé 'in' ou .contains in python et C #

s='''
qwertyuiop
asdfghjkl

zxcvbnm
token qwerty

asdfghjklñ
'''

http://pythex.org/ correspond aux 2 lignes suivantes

....
....
token qwerty
7
Rohit Malgaonkar

Avec des expressions régulières

import re
s="""
    qwertyuiop
    asdfghjkl

    zxcvbnm
    token qwerty

    asdfghjklñ
"""
>>> items=re.findall("token.*$",s,re.MULTILINE)
>>> for x in items:
...     print x
...
token qwerty
5
YOU