2010-04-01 2 views
12

Есть ли способ поиска из строки строки, содержащей еще одну строку, и получить всю строку?Поиск и получение строки в Python

Например:

string = 
    qwertyuiop 
    asdfghjkl 

    zxcvbnm 
    token qwerty 

    asdfghjklñ 

retrieve_line("token") = "token qwerty" 

ответ

25

вы упомянули "всю линию", так я предполагается MyString является вся линия.

if "token" in mystring: 
    print mystring 

однако если вы хотите, чтобы просто получить "токенов QWERTY",

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

С помощью регулярных выражений

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

Если вы предпочитаете Однострочник:

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

Я случайно нажал на кнопка «downvote»! Я думаю, мне нужно подождать, чтобы его перенести, или, может быть, сначала нужно поместить правление, прежде чем я смогу исправить свою ошибку. –

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

вы можете также получить линию если перед токеном есть другие символы

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

Вышеприведенные работает как Grep знамением на UNIX и ключевое слово 'в' или .Contains в питона и C#

s=''' 
qwertyuiop 
asdfghjkl 

zxcvbnm 
token qwerty 

asdfghjklñ 
''' 

http://pythex.org/ соответствует следующие 2 строки

.... 
.... 
token qwerty 
Смежные вопросы