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

标签 python

我想检查一个字符串是否在一个文本文件中。如果是,则执行 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"

最佳答案

你总是得到 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):

关于python - 如何在文本文件中搜索字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4940032/

相关文章:

php - Python 中的 cURL 帮助

python - 如何删除列表中满足 python 特定条件的最左边/最右边的元素?

python - Tensorflow seq2seq 获取序列隐藏状态

python - Docplex 添加约束太慢

Python加入日期和文件名

python - 官方 Python 教程(第 9.10 章)中的示例错误?

python - pip安装后如何启用mod_wsgi

python - 访问没有实例的方法文档字符串,Python

python - 什么时候应该使用 setUpClass 什么时候只使用类成员?

python - Youtube 上传到自己的帐户