我在一本书中遇到了以下代码,两段代码都产生了下面提到的相同的输出。我理解了第二段代码,但是,我无法理解第一段代码,特别是这行代码,即"if line.find('From:') >= 0:
"--我的意思是这一行是什么意思?它是在暗示如果这一行大于零,那么就会产生所需的结果,还是在说长度函数,但如果它采用的是长度函数,那么作者为什么不使用python的len(function)?还有,为什么会有大于和等于的符号?如果我使用这行代码,我也得到同样的输出,即:"if line.find('From:') == 0:
". 这都是什么意思?有人能帮我理解一下吗?希望得到任何帮助。
# 1st code
import re
hand = open('mbox-short.txt')
for line in hand:
line = line.rstrip()
if line.find('From:') >= 0: # This is also working ---> if line.find('From:') == 0: (BUT WHY and HOW COME)?
print(line)
# 2nd code
hand = open('mbox-short.txt')
for line in hand:
line = line.rstrip()
if line.find('From:'): continue
print(line)
Output:
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
find方法会检查你所调用的字符串中是否有你所传递的子串的第一次出现。
所以在你的例子中,它检查行的第一个'From:'。找到中的s。如果它有一个结果,那么它就返回出现的最低索引。但是当搜索没有结果时,find()会返回-1(见 Python文档)
From: [email protected]
在开头有'From:',所以结果索引是0。
if line.find('From:') >= 0:
检查,是否有任何发现。
另一方面 == 0
将会检查'From:'这个子串是否在这一行的开头
函数find在给定的字符串中返回被搜索字符串的索引,如果没有找到被搜索的内容,则返回-1,这就是>=0子句背后的原因。