Python 如何在文件中特定索引处查找列表值(例如:[1,2,3])的所有实例

Python 如何在文件中特定索引处查找列表值(例如:[1,2,3])的所有实例,python,Python,我想找出文件中特定索引处的元素列表 例如,下面是文件“temp.txt”的内容 现在,我需要找出上面文件中每行第2列中按顺序出现的值[1,2,3]列表 输出应如下所示: line_2 3 line_9 3 我试过下面的逻辑,但它有些不起作用;( 有人能帮我找出上面代码的问题吗?或者甚至是一个能给出正确输出的不同逻辑也可以。对任何序列和列进行概括 sequence=['1','2','3'] col=1 打开(文件名为“r”)作为填充: idx=0 对于i,枚举(填充)中的行: 如果line.s

我想找出文件中特定索引处的元素列表

例如,下面是文件“temp.txt”的内容

现在,我需要找出上面文件中每行第2列中按顺序出现的值[1,2,3]列表

输出应如下所示:

line_2 3
line_9 3
我试过下面的逻辑,但它有些不起作用;(


有人能帮我找出上面代码的问题吗?或者甚至是一个能给出正确输出的不同逻辑也可以。

对任何序列和列进行概括

sequence=['1','2','3']
col=1
打开(文件名为“r”)作为填充:
idx=0
对于i,枚举(填充)中的行:
如果line.strip().split()[col]==序列[idx]:
如果idx==len(序列)-1:
打印(行)
idx=0
其他:
idx+=1
其他:
idx=0

您的代码有缺陷。最突出的缺陷是:尝试使用行号在文本文件中查找永远不会起作用:您必须使用字节偏移量。即使这样做,也会出错,因为您正在对行进行迭代,所以在执行此操作时不应尝试更改文件指针

我的做法:

其思想是“转置”文件以处理垂直向量,在第二个垂直向量中查找序列,并使用找到的索引提取第一个垂直向量上的数据

拆分
行以获取文本和数字,压缩结果以获取2个向量:1个数字1个文本

此时,一个列表包含
[“行0”、“行1”、…]
,另一个列表包含
[“1”、“2”、“3”、“4”、…]

在数字列表中找到序列的索引,找到时打印成对的txt/数字

代码:

结果:

line_2 3
line_9 3
[('line_2', '3'), ('line_9', '3')]
最后一个
for
循环可以被列表理解替换以生成元组:

result = [(txt[i+2],nums[i+2]) for i in range(len(nums)-len(sequence)) if nums[i:i+len(sequence)]==sequence ]
结果:

line_2 3
line_9 3
[('line_2', '3'), ('line_9', '3')]

在每行的索引2处按顺序出现-你能详细说明一下吗?@RomanPerekhrest:我已经编辑了这个问题,我的意思是第2列,而不是索引2。int()可能会引发一个例外。这不会给出我正在寻找的输出,请参阅帖子中提到的输出格式。我必须找到[1,2,3]的顺序在每行的第二列中,如果找到序列,则打印任何元素的索引。@programmerDaemon我重新阅读了您的问题并相应地修改了我的代码,我唯一不清楚的是您正在寻找的输出格式:您要打印索引还是整行?实际上输出格式对我来说并不重要,它是okay打印整行,或者只是打印行号。我的目的是在找到序列后查找序列的所有匹配项,并且我的原始用例还有一些其他操作要做。生成失败,出现以下错误:对于i,枚举中的行(lines\u gen):ValueError:I/O操作关闭的文件。这会给出预期的输出。但是我觉得理解逻辑没有什么困难,因为我是Python的初学者。我会寻找更简单的解决方案(时间对我来说不是限制)在接受这个答案之前。-谢谢,我认为,只有在文件中的列数是唯一的情况下,这才有效。正确吗?如果每行至少包含2列,那么即使每行中的列数不同,如何使这项工作有效。此外,如果序列和文件完全包含sam,则上述代码不起作用元素的数量。@programmerDaemon:处理好了,添加了+1,你是对的。并且修复了超过2列的问题。谢谢你的反馈。
[('line_2', '3'), ('line_9', '3')]