2011-10-31 66 views
1

一个txt的匹配行我可以测试一个字符串是否是一个文本文件,如下面的Python:发现与蟒蛇

if(pdfname in open(filename).read()): 
    //do something 

但我怎么能我验证?我想要显示匹配行。谢谢。

+1

你怎么_verify_呢?如果您不相信Python能够正确处理该代码段,那么为什么您不相信它不会撒谎并在其中使用'pdfname'打印随机垃圾? :-) – paxdiablo

+0

我只是打印出文件并自己做。 – Blender

+0

@paxidiablo我只是用另一种方法来测试匹配行,结果证明代码错了,与此版本相比,这可能是对的。不是我不相信python,但我不太相信谷歌搜索的代码,所以我需要验证它。 – lamwaiman1988

回答

1

可以打印出相关的行与下面的第二for声明,我已经添加到您现有的代码加以说明:

pdfname = "statementConcentrator" 
if (pdfname in open("line56.good").read()): 
    print "Found it" 

lineNum = 0 
for line in open("line56.good").readlines(): 
    lineNum = lineNum + 1 
    if pdfname in line: 
     print "#%5d: %s"%(lineNum, line[:-1]) 

这将输出您的当前行和我的输出以进行验证:

Found it 
# 115: statementConcentrator=0 

,并检查该文件,这确实是它找到的路线。

请注意,你可以简单地使用脚本如下单个循环来完成这两个步骤:

pdfname = "statementConcentrator" 
lineNum = 0 
count = 0 
for line in open("line56.good").readlines(): 
    lineNum = lineNum + 1 
    if pdfname in line: 
     print "#%5d: %s"%(lineNum, line[:-1]) 
     count = count + 1 
print "Found on %d line(s)."%(count) 
+0

相当低效率翻两遍文件。 – Amber

+0

@Amber,我并不是主张两次检查这个文件,我的回答只是我添加到现有脚本中的最后一部分。我会澄清。 – paxdiablo

1

只是遍历文件:

handle = open(filename, 'r') 

for line in handle: 
    if pdfname in line: 
    print line 

handle.close()