当前位置: 首页 > 面试题库 >

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

罗绪
2023-03-14
问题内容

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



 类似资料:
  • 我试图创建一个java程序,它可以读取一个名为file1.txt的文件,存储它的字符串,并将这些字符串搜索到另一个名为file2.txt的文件,如果没有找到匹配,则从file1.txt打印特定的字符串。 现在我可以从file1.txt获得数据,但无法搜索file1的数据,例如在file2.txt中搜索单词“home” 请看这里的file1.txt包含Homee,而file2.txt有Home,所以

  • 问题内容: 如何使用Python 3搜索和替换文件中的文本? 这是我的代码: 输入文件: 当我在上面的输入文件中搜索并将“ ram”替换为“ abcd”时,它起了一种魅力。但是,反之亦然,即用“ ram”替换“ abcd”时,一些垃圾字符会保留在末尾。 用“ ram”代替“ abcd” 问题答案: fileinput已经支持就地编辑。stdout在这种情况下,它将重定向到文件:

  • 问题内容: 这个问题已经被问过很多次了。花了一些时间阅读答案之后,我进行了一些简要的分析,以尝试前面提到的各种方法… 我有一个 600 MB的 文件,其中包含 600万 行字符串(来自DMOZ项目的类别路径)。 每行上的条目都是唯一的。 我想 一次* 加载 文件并 继续在 数据中 搜索 匹配项 *** 我在下面尝试的三种方法列出了加载文件所需的时间,任务管理器中 负匹配的 搜索时间和内存使用情况

  • 问题内容: 我是Lucene的新手,在创建 用于查询文本文件集合的 简单代码时遇到一些问题。 我尝试了此示例,但与新版本的Lucene不兼容。 UDPATE: 这是我的新代码,但是仍然无法使用。 问题答案: Lucene是一个相当大的主题,涉及很多类和方法,通常您必须至少了解一些基本概念才能使用它。如果您需要快速可用的服务,请改用Solr。如果您需要对Lucene的完全控制,请继续阅读。我将介绍一

  • 问题内容: 我有mysql表,其中有一列将xml存储为字符串。我需要找到xml列包含给定6个字符的字符串的所有元组。没关系-我只需要知道这6个字符串是否存在即可。 因此,将文本格式设置为xml可能并不重要。 问题:如何在mysql中搜索?即 有没有一种方法可以使用LIKE运算符执行此操作? 问题答案: 您可能可以使用该子句进行一些简单的字符串匹配: 如果您需要更多高级功能,请在此处查看MySQL的

  • 问题内容: 我需要在一个很大的文本文件中搜索特定的字符串。它的构建日志包含大约5000行文本。最好的方法是什么?使用正则表达式应该不会引起任何问题吗?我将继续阅读几行,并使用简单的查找。 问题答案: 如果它是“相当大”的文件,请顺序访问各行,而不要将整个文件读入内存: