python列表搜索,关键词存在于多个元素中, 得到不同的索引。

danny posted @ 2013年6月05日 01:01 in python with tags linux python shell , 7268 阅读

在列表中,搜索元素比较头痛,一般只会得到第一个元素的索引,这里,我改变了搜索过的元素。当然,实际操作中,是需要把列表复制的 如 d=c[:] 再对d进行处理。

此代码来自一个问题:

yjcong

这个, 我不晓得是哪个术语对应, 所以加了个引号.

问题有2个,

1) 在一个文件中, 如何在定位的"abcxyz"后, 如何显示其下一行的内容. 若是有很多个, 如何?

2) 假设搜索的关键字在第n行, 如何同时显示第n-1, n, n+1行的内容

thx

问题二在帖子中已经解决,不再处理。http://forum.ubuntu.com.cn/viewtopic.php?f=21&t=443359&p=3007102#p3007102

关键词改为熟悉的foo

 

 

测试用例

foo
akjkdjkejwl
rkewjlkrjwelk
foo
fewkjk1kl1l2l1212l1
fewkjrkewjn mnfmenw
ewkjrkjwl
barfoofwerjwekjr
barofwerjwekjr
 

输出结果

 

akjkdjkejwl

fewkjk1kl1l2l1212l1

barofwerjwekjr

 





#!/usr/bin/env python3
import re

def fun(c):
     for i in c:
         if re.findall('foo',i):
                 try:
                         print(c[c.index(i)+1])
                         c[c.index(i)] += 'someword' 
                 except:
                         print("keyword is in the last line")

 #f=open('d:/1')
 #c=[]
#[c.append(i) for i in f.readlines()]
 #fun(c)
fun(open('d:/1').readlines())

 

 

Avatar_small
依云 说:
2013年6月05日 14:04

[c.append(i) for i in f.readlines()] 这行是在干什么呢……
为什么不 c = f.readlines() 呢?

Avatar_small
danny 说:
2013年6月10日 01:50

其实没必要。
没注意过readlines()返回的是列表。
fun(open('d:/1').readlines())


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter