0

所以,我可能会以错误的方式解决这个问题,如果是这样,我会很感激以不同的方式来解决问题,但这就是我正在尝试做的事情,以及我正在尝试做的事情。

我正在根据我发现的一些初学者项目建议制作一个简单的地址簿,我正在慢慢实现它,但我不知道如何让它搜索文件的某个部分。我希望它打印姓名、地址、电话和手机。所有这些都在一个单独的行上,总共 4 行。

我正在使用以下代码来完成此操作:

def search_entries():
    found = 0
    search = raw_input("Please enter the person's name: ")
    for line in open('addbook.txt', 'r').readlines():
        if search in line:
            found = 1
        if found >= 1:
            print line
            if found == 4: break

但是,不是只打印人名中的这 4 行,而是打印文件的其余部分。任何帮助表示赞赏,谢谢。

4

3 回答 3

0

found设置为 1 后永远不会改变。

于 2012-11-25T12:32:37.350 回答
0

意识到我忘了在代码中添加一个计数器:

def search_entries():
    found = 0
    search = raw_input("Please enter the person's name: ")
    for line in open('addbook.txt', 'r').readlines():
        if search in line:
            found = 1
        if found >= 1:
            print line
            found = found + 1
            if found == 4: break
于 2012-11-25T12:32:38.847 回答
0

有一个稍微好一点的写法(未经测试):

from itertools import islice

with open('input.txt') as fin:
    for line in fin:
        if 'bob' in line:
            next_3 = list(islice(fin, 3))
            print line, next_3
            break
于 2012-11-25T12:35:51.410 回答