Python - 在行之间读取和打印?

时间:2016-11-09 16:43:23

标签: python

我有这个代码,我从纯文本中读取

python文件:

from itertools import islice

def phones():
    with open('phones.txt','r+') as f:
        lines = islice(f, 2, 4) #lines 2 and 4 only
        for line in f:
            found_phone = line.find('Phone')
            if found_phone != -1:
                Phones = line[found_phone+len('Phone:'):]
                print Phones 
    return Phones

phones()

我的问题是我想打印"电话"旁边的单词。在第2和第4行之间, 它打印了#34; phone"之后的每个单词。我只想在第2和第4行之间。

这是我的文本文件

First lines of Phones
        Phone Blackberry #Line 2
        Phone iPhone     #Line 3 
        Phone Huawei     #Line 4
Second lines of Phones
        Phone Samsung
        Phone LG

这是我的输出:

enter image description here

我想要打印的只是在第2行和第4行之间 我想要这个输出:

Blackberry
iPhone
Huawei

我试图用itertools来做这件事,但它不起作用...... 我做错了什么?

2 个答案:

答案 0 :(得分:0)

这里有两个问题。首先,指定lines作为切片,然后循环遍历整个文件f。其次,您的切片不会返回您之后的内容 - islice似乎从零开始并且不会包含上限(来自我在Python 2.7中的测试),因此你实际上在islice(f, 1, 4)之后的部分。

具有这些更正的代码如下:

from itertools import islice

def phones():
    with open('phones.txt','r+') as f:
        lines = islice(f, 1, 4)
        for line in lines:
            found_phone = line.find('Phone')
            if found_phone != -1:
                Phones = line[found_phone+len('Phone:'):]
                print Phones 
    return Phones

phones()

返回

Blackberry

iPhone

Huawei

要删除值之间的行,您可以使用print Phones.rstrip()而不是print Phones

答案 1 :(得分:0)

你可以试试这个:

lines = [line.split() for line in open('phones.txt','r+')]
lines = lines [1:4]

select = [x[1] for x in lines ]

output => ['黑莓','iPhone','华为']