Guardian Part

TIPS
关于Guardian Part

'''
用另一种写法来读取mbox-short当中的from
'''

fhandle = open('mbox-short.txt')
for line in fhandle:
    line = line.rstrip()
    wds = line.split()
    if wds[0] != 'From':
        print('ignore')

这里会报错:
File “E:/TESTS/PYTHON/Guardian_part/guardian_part.py”, line 9, in
if wds[0] != ‘From’:
IndexError: list index out of range

debug:

fhandle = open('mbox-short.txt')
for line in fhandle:
    line = line.rstrip()
    wds = line.split()
    print('word: ' , line)  #DEBUG
    if wds[0] != 'From':
        continue
    else:
    	print('From Line')

可以发现源文件当中有空行,这样的话wds[0]本身就是不存在的了

所以解决方法是加保护模块:

'''
用另一种写法来读取mbox-short当中的from
'''

fhandle = open('mbox-short.txt')
for line in fhandle:
    line = line.rstrip()
    wds = line.split()
    print('word: ' , line)
    if len(line) == 0:
        continue           #保护模块
    if wds[0] != 'From':
        continue
    else:
    	print('From Line')

或者这样写:

fhandle = open('mbox-short.txt')
for line in fhandle:
    line = line.rstrip()
    wds = line.split()
    #print('word: ' , line)
    if len(line) == 0 or wds[0] != 'From':
        continue
    else:
        print('From Line')

注意:
如果写成

 if wds[0] != 'From' or len(line) == 0 :

同样会报错,因为率先执行了wds[0] != ‘From’,所以空行没有被率先排除,所以依然会报错。

发布了34 篇原创文章 · 获赞 5 · 访问量 6932

猜你喜欢

转载自blog.csdn.net/weixin_43593303/article/details/89605543
今日推荐