繁体   English   中英

如何在 python 列表中打印上一行和下一行

[英]How to Print Previous Row And Next Row In python List

我想打印下一行和上一行,这是我的代码

import csv
file= "myfile.txt"
searchname=input("Enter the name to be searched:")
f=open(file,'r')
reader=csv.reader(f)
lst=[]
for row in reader:
    lst.append(row)
    q=0
for row in lst:    
    if searchname in row:
        print(row)
        q+=1
    
f.close()

我的文件.txt:

python,programming
java,programming
html,webdesigning
php,programming

我可以在 python 中搜索“html”: Output 是 ['html','webdesigning']
但我想打印
['java','编程']
['html','网页设计']
['php','编程']



有可能的?? 有人有答案吗?? 请帮忙!

你可以这样做:

for index,row in enumerate(list):
if searchname in row:
    print(row)
    if index - 1 >= 0:
        print(list[index-1])
    if index + 1 < len(list):
        print(list[index+1])

csv.reader提供了一个生成器,所以你不能像列表一样使用它。 实现您想要的一个简单方法应该是将阅读器 object 转换为列表。 然后您可以对其进行迭代,当找到模式时,显示当前索引为 -1、0 和 +1 的对象。

try except 语句处理您找到的 object 是第一个或最后一个的情况。

import csv

file = "myfile.txt"
searchname = input("Enter the name to be searched:")
with open(file, 'r') as f:
    reader = list(csv.reader(f))
    for index, row in enumerate(reader):
        if searchname in row:
            for i in range(-1, 2):
                try:
                    print(reader[index+i])
                except IndexError:
                    pass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM