2010-04-01 2 views
12

C'è un modo per cercare, da una stringa, una riga contenente un'altra stringa e recuperare l'intera riga?Cerca e ottieni una riga in Python

Ad esempio:

string = 
    qwertyuiop 
    asdfghjkl 

    zxcvbnm 
    token qwerty 

    asdfghjklñ 

retrieve_line("token") = "token qwerty" 

risposta

25

voi hanno citato "tutta la linea", così ho assunto mystring è l'intera linea.

if "token" in mystring: 
    print mystring 

se si desidera ottenere solo "qwerty gettone",

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

con le espressioni regolari

import re 
s=""" 
    qwertyuiop 
    asdfghjkl 

    zxcvbnm 
    token qwerty 

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

Se si preferisce una battuta:

matched_lines = [line for line in my_string.split('\n') if "substring" in line] 
+0

ho cliccato accidentalmente il pulsante "downvote"! Penso di dover aspettare per l'upvoting, o forse è necessario inserire una modifica prima di poter correggere il mio errore. –

3
items=re.findall("token.*$",s,re.MULTILINE) 
>>> for x in items: 

è anche possibile ottenere la linea se ci sono altri caratteri prima del token

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

I lavori di cui sopra, come gettone grep su UNIX e parola chiave 'in' o .contains in Python e C#

s=''' 
qwertyuiop 
asdfghjkl 

zxcvbnm 
token qwerty 

asdfghjklñ 
''' 

http://pythex.org/ partite le seguenti 2 linee

.... 
.... 
token qwerty