小编典典

如何在文本文件中搜索字符串?

all

我想检查一个字符串是否在文本文件中。如果是,则执行 X。如果不是,则执行 Y。但是,True由于某种原因,此代码总是返回。任何人都可以看到有什么问题吗?

def check():
    datafile = file('example.txt')
    found = False
    for line in datafile:
        if blabla in line:
            found = True
            break

check()
if True:
    print "true"
else:
    print "false"

阅读 108

收藏
2022-06-24

共1个答案

小编典典

你总是得到的原因True已经给出,所以我将提供另一个建议:

如果您的文件不是太大,您可以将其读入一个字符串,然后使用它(比读取和检查每行的行更容易且通常更快):

with open('example.txt') as f:
    if 'blabla' in f.read():
        print("true")

mmap.mmap()另一个技巧:您可以通过使用创建一个使用底层文件的“类似字符串”的对象(而不是读取内存中的整个文件)来缓解可能的内存问题:

import mmap

with open('example.txt') as f:
    s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
    if s.find('blabla') != -1:
        print('true')

注意:在 python 3 中,mmap
的行为类似于bytearray对象而不是字符串,因此您查找的子序列find()也必须是bytes对象而不是字符串,例如。s.find(b'blabla')

#!/usr/bin/env python3
import mmap

with open('example.txt', 'rb', 0) as file, \
     mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
    if s.find(b'blabla') != -1:
        print('true')

mmap您还可以在不区分大小写的搜索中使用正则表达式:if re.search(br'(?i)blabla', s):

2022-06-24