python列表搜索,关键词存在于多个元素中, 得到不同的索引。
在列表中,搜索元素比较头痛,一般只会得到第一个元素的索引,这里,我改变了搜索过的元素。当然,实际操作中,是需要把列表复制的 如 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())
2013年6月05日 14:04
[c.append(i) for i in f.readlines()] 这行是在干什么呢……
为什么不 c = f.readlines() 呢?
2013年6月10日 01:50
其实没必要。
没注意过readlines()返回的是列表。
fun(open('d:/1').readlines())