我的输出文件如下:
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
我尝试删除垃圾邮件的第一行和最后一行,并且存在关键字。但我的输出文件生成是随机的。
请帮助我找到字符串的最佳方法是在文件的第三列中退出。
答案 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')