在 Python 中搜索并获取一行

Posted

技术标签:

【中文标题】在 Python 中搜索并获取一行【英文标题】:Search and get a line in Python 【发布时间】:2011-02-03 05:00:29 【问题描述】:

有没有办法从一个字符串中搜索包含另一个字符串的行并检索整行?

例如:

string = 
    qwertyuiop
    asdfghjkl

    zxcvbnm
    token qwerty

    asdfghjklñ

retrieve_line("token") = "token qwerty"

【问题讨论】:

【参考方案1】:

你提到了“整行”,所以我假设 mystring 是整行。

if "token" in mystring:
    print(mystring)

但是,如果您只想获得“token qwerty”,

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

【讨论】:

【参考方案2】:

如果您更喜欢单线:

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

【讨论】:

【参考方案3】:
items=re.findall("token.*$",s,re.MULTILINE)
>>> for x in items:

如果token前还有其他字符也可以获取该行

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

上面的工作类似于 unix 上的 grep 令牌和关键字 'in' 或 .contains 在 python 和 C# 中

s='''
qwertyuiop
asdfghjkl

zxcvbnm
token qwerty

asdfghjklñ
'''

http://pythex.org/ 匹配以下两行

....
....
token qwerty

【讨论】:

【参考方案4】:

使用正则表达式

import re
s="""
    qwertyuiop
    asdfghjkl

    zxcvbnm
    token qwerty

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

【讨论】:

以上是关于在 Python 中搜索并获取一行的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中搜索和替换文件中的一行

如何从 html 获取 USER 输入并使用 Python 在数据库中搜索它

python 逐行读取txt文件里的词, 并反复搜索 如何实现?

Python从搜索中获取请求并检索数据

python 谷歌搜索并获取搜索结果的数量

在命令行输出中搜索关键字并显示上一行的批处理文件(x5)