每行

时间:2017-05-11 02:59:15

标签: python python-2.7

我的输出文件如下:

junk
abc 123 xyz test
123 abc test 123
bob ani kepu maro
exist

我正在尝试使用此文件是我正在搜索kepu存在于文件的第3列中。

我正在尝试下面的代码:

   name = "kepu"
   with open("listfile.txt") as f:
      for line in f:
         line = line.split(" ")[2]
         line = line.lower()
         if line == name:
            print "Present"
         else:
            print "Not Present"

因为在文件中没有相同数量的字符串,所以在第一行"垃圾"最后一行"存在"只包含一个字符串并尝试

line = line.split(" ")[2] 

这就是我得到以下错误的原因:

 IndexError: list index out of range

我尝试删除垃圾邮件的第一行和最后一行,并且存在关键字。但我的输出文件生成是随机的。

请帮助我找到字符串的最佳方法是在文件的第三列中退出。

5 个答案:

答案 0 :(得分:2)

添加一项检查以确保该行至少包含3个字:

wordsInLine = line.split(" ")
if len(wordsInLine) > 2:
    if wordsInLine[2].lower() == name:
        print "Present"
     else:
        print "Not Present"

答案 1 :(得分:1)

或者你可以抛出异常:

ng-change

答案 2 :(得分:0)

只需做一个简单的a= '000' 声明:

if

答案 3 :(得分:0)

您可能理解“for line in f”并不清楚:您不能使用此代码,可能您可以找到问题发生的原因:

 with open("listfile.txt") as f:
...:     for line in f:
...:        print 'line=%s'%line
...:
line=junk
line=abc 123 xyz test
line=123 abc test 123
line=bob ani kepu maro
line=exist

答案 4 :(得分:0)

使用正则表达式:

import re

re_kepu = re.compile('^(\w+ ){2}kepu')

with open('listfile.txt', 'r') as f:
    for line in f:
        if re_kepu.match(line):
            print('Present')
            break
    else:
        print('Not present')