我有这个代码,我从纯文本中读取
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
这是我的输出:
我想要打印的只是在第2行和第4行之间 我想要这个输出:
Blackberry
iPhone
Huawei
我试图用itertools
来做这件事,但它不起作用......
我做错了什么?
答案 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','华为']