我有一个读取文件的小脚本。在读完一行后,我试图弄清楚特定的行中有特定的文本。因为我喜欢这个
for line in file:
line = line.lower()
if line.find('my string'):
print ('found my string in the file')
读取line.find aways评估为true的文件。我什么时候喜欢
for line in file:
line = line.lower()
if 'one big line'.find('my string'):
print ('found my string in the file')
它评估为假,正如它想做的那样。因为我对python编程很新,只是因为我已经展示了我只是想不出我可能会寻找...
答案 0 :(得分:6)
find
返回一个数字,它是搜索字符串中出现的字符串的位置。如果找不到,则返回-1
。并且python中不是0
的每个数字都计算为True
。这就是为什么您的代码总是评估为True
。
您需要以下内容:
if 'one big line'.find('my string') >= 0:
print ('found my string in the file')
或者,更好:
idx = 'one big line'.find('my string')
if idx >= 0:
print ("found 'my string' in position %d" % (idx))
答案 1 :(得分:2)
将这个写成:
是更好的惯用pythonfor line in file:
line = line.lower()
if 'my string' in line:
print ('found my string in the file')
如果你不关心字符串中的位置,那么而不是使用.find()
。