web-dev-qa-db-ja.com

Pythonの行を検索して取得します

文字列から別の文字列を含む行を検索し、行全体を取得する方法はありますか?

例えば:

string = 
    qwertyuiop
    asdfghjkl

    zxcvbnm
    token qwerty

    asdfghjklñ

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

あなたは「全体の行」に言及したので、私は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
33
ghostdog74

ワンライナーを好む場合:

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:

トークンの前に他の文字がある場合も行を取得できます

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

上記は、Unixのgrepトークンとキーワード「in」または.contains in python and C#

s='''
qwertyuiop
asdfghjkl

zxcvbnm
token qwerty

asdfghjklñ
'''

http://pythex.org/は次の2行に一致します

....
....
token qwerty
7