检查字符串是否在 python 中的 2 GB 字符串列表中

2024-02-09

我有一个大文件(A.txt) 2 GB 包含字符串列表['Question','Q1','Q2','Q3','Ans1','Format','links',...].

现在我有另一个更大的文件(1TB),其中第二个位置包含上述字符串:

Output:

a, Question, b
The, quiz, is
This, Q1, Answer
Here, Ans1, is
King1, links, King2
programming,language,drupal,
.....

我想保留第二个位置包含文件中存储的列表中的字符串的行A.txt。也就是说,我想保留(存储在另一个文件中)下面提到的行:

a, Question, b
This, Q1, Answer
Here, Ans1, is
King1, links, King2

我知道当文件(A.txt)中的列表长度为 100 时如何执行此操作..使用“any”。但当文件 (A.txt) 中的列表长度为 2 GB 时,我不知道应该如何处理。


不要使用列表;使用一组代替。

将第一个文件读入集合中:

with open('A.txt') as file_a:
    words = {line.strip() for line in file_a}

0.5 GB 的单词不是that一套可以储存很多东西。

现在你可以测试words在 O(1) 常数时间内:

if second_word in words:
    # ....

打开第二个文件并逐行处理它,也许使用csv如果行中的单词以逗号分隔,则为模块。

对于较大的单词集,请改用数据库; Python 附带了sqlite3图书馆:

import sqlite3

conn = sqlite3.connect(':memory:')
conn.execute('CREATE TABLE words (word UNIQUE)')

with open('A.txt') as file_a, conn:
    cursor = conn.cursor()
    for line in file_a:
        cursor.execute('INSERT OR IGNORE INTO words VALUES (?)', (line.strip(),))

然后进行测试:

cursor = conn.cursor()
for line in second_file:
    second_word = hand_waving
    cursor.execute('SELECT 1 from words where word=?', (second_word,))
    if cursor.fetchone():
         # ....

即使我使用:memory:在这里,当你开始填满内存时,SQLite 足够聪明,可以将数据存储在临时文件中。这:memory:连接基本上只是一个临时的、一次性的数据库。如果您想重新使用单词数据库,您也可以使用真实的文件路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查字符串是否在 python 中的 2 GB 字符串列表中 的相关文章

随机推荐

  • django图像存储cdn

    过去几个月我一直在使用rackspace CDN 以及 django imagekit 和 django cumulus 我对结果并不满意 由于超时等原因 我似乎收到了很多错误 File www django test1 omu2 src
  • 是什么导致 EXE 的大小变大?

    我的可执行文件大小为 364KB 它没有使用 Vector2D 类 因此我使用重载运算符实现了一个 我改变了我的大部分代码 point x point2 x point y point2 y to point point2 这导致我删除了近
  • 使用 WebClient 的 Silverlight 后台线程

    我正在使用一个WebClient从我的网络服务异步获取信息 wc DownloadStringCompleted DownloadStringCompleted wc DownloadStringAsync service 我工作得很好 但
  • React-Native 最低 Android API 级别

    我正在对react native和android进行一些研究 有谁知道android的最低api级别react native支持吗 我搜索了他们的文档页面 但找不到它 支持的操作系统 gt Android 4 1 API 16 和 gt i
  • DiffUtil.Callback 未按预期工作

    我正在使用 DiffUtil ItemCallback 和 ListAdapter 来更新 RecyclerView 它运行得很好 但它的行为有些让我困扰 根据文档 areContentsTheSame仅当以下情况时才应该调用方法areIt
  • `ValueError: 太多值无法用 `scipy.stats.linregress` 解包(预期为 4)`

    我知道这个错误消息 ValueError too many values to unpack expected 4 当设置的变量数量多于函数返回的值时 就会出现 scipy stats linregress根据 scipy 文档返回 5 个
  • 在哪里可以学习对数? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我在编程环境中经常听到对数的提及 它们似乎可以解决许多问题 但我似乎无法找到使用它们的现实方法 我读过
  • Twilio IBM Watson Speech To Text Addon 回调功能未触发

    我的目标是使用 Twilio 平台上提供的 IBM Watson Speech to Text Addon Twilio 附加功能 进行转录 呼叫者的输入 IVR 对话 IBM Watson 语音转文本插件已安装 Problem 回调 UR
  • 在Java中,如何更有效地追加字符串? [复制]

    这个问题在这里已经有答案了 我写了一个Java程序 我需要在其中附加一个字符串 u13a2 到现有的 u1234 u12de u1386 u15a3 渐渐地 绳子变得越来越长 我发现每次追加所花费的时间也变得越来越长 有什么办法可以在一定程
  • Pylint 函数名称无效

    我正在使用 Python 3 6 2 运行 Pylint 1 7 2 Pylint 显示以下错误 Invalid function name create maximization option dataframe invalid name
  • jQuery 悬停在表格上的效果

    我是 jQuery 新手 我想在我的桌子上制作悬停效果 但我不知道如何做 我只想将文本设为红色 然后在焦点丢失时如何再次删除红色 这是我到目前为止所拥有的 table border 1 tr th ID th th name th tr t
  • 使用四元数的设备方向

    我编写了一个 JS SDK 来监听移动设备旋转 提供 3 个输入 角度范围为 0 到 360 度 180 到 180 度之间的角度 90 到 90 度之间的角度 设备轮换的文档 https www sitepoint com using d
  • 拖放数据时清除输入字段

    我编写了一个函数 当用户将注意力集中在输入字段上时 该函数会自动清除输入字段的预设值 如果用户没有输入任何值 则将其恢复为模糊状态 所以的价值
  • 触摸浏览器中的元素(如指针事件:无)

    问题 我搜索了又搜索 但找不到有关如何通过覆盖元素触发触摸事件的信息 我通过使用以下方法解决了鼠标单击事件的问题 pointer events none 这很简单 但它不适用于触摸事件 我知道有一些移动原生的东西可以解决这个问题 但这纯粹是
  • 如何使用 Entity Framework 4.1 将连接字符串传递给数据库优先 DBContext 的构造函数?

    由于各种原因我想not将我的实体框架数据库模型的连接字符串存储在各种 config 文件之一中 我将最新最好的 DBContext API 与新的实体框架版本 4 1 NET 4 和 Visual Studio 2010 C 结合使用 但是
  • 为什么重写的函数首先被调用?

    我执行了以下程序 我对得到的输出感到好奇 其中函数输出首先被打印 即使它是我尝试首先打印的变量 class Baap public int h 4 public int getH System out println Baap h retu
  • 生产环境中无法解释的 SQL 错误 - 可能与网络相关

    我正在做一些相当密集的数据库工作 最终将很多很多记录插入到数据库中 为了尽量减少上下文膨胀 我一次执行 100 个插入 处理上下文 然后重新创建上下文 我收到一些我不明白的奇怪错误 这些错误仅发生在我们的生产服务器上 但在开发服务器上一切正
  • iOS 9 CollectionView 速度变慢

    我一直在为 iOS8 开发我的应用程序 并且在滚动速度方面还没有遇到任何问题 当我升级到 iOS9 时 collectionView 变得非常不稳定和令人震惊 我无法指出任何具体原因 在我的集合视图中 我的项目包含使用第 3 方库 SDWe
  • 如何检测 WiFi 网络共享状态

    我想知道如何检测 WiFi 网络共享的状态 我看过一篇文章 Android 2 3 wifi热点API https stackoverflow com questions 7048922 android 2 3 wifi hotspot a
  • 检查字符串是否在 python 中的 2 GB 字符串列表中

    我有一个大文件 A txt 2 GB 包含字符串列表 Question Q1 Q2 Q3 Ans1 Format links 现在我有另一个更大的文件 1TB 其中第二个位置包含上述字符串 Output a Question b The q