如何从两个制表符分隔的文件中获取枢轴线?

2024-02-27

给定两个文件file1.txt

abc def \t 123 456
jkl mno \t 987 654
foo bar \t 789 123
bar bar \t 432 

and file2.txt

foo bar \t hello world
abc def \t good morning
xyz \t 456

任务是提取第一列匹配的行并实现:

abc def \t 123 456 \t good morning
foo bar \t 789 123 \t hello world

我可以用Python这样做:

from io import StringIO

file1 = """abc def \t 123 456
jkl mno \t 987 654
foo bar \t 789 123
bar bar \t 432"""


file2 = """foo bar \t hello world
abc def \t good morning
xyz \t 456"""

map1, map2 = {}, {}

with StringIO(file1) as fin1:
    for line in file1.split('\n'):
        one, two = line.strip().split('\t')
        map1[one] = two
    
    
with StringIO(file2) as fin2:
    for line in file2.split('\n'):
        one, two = line.strip().split('\t')
        map2[one] = two
        
        
for k in set(map1).intersection(set(map2)):
    print('\t'.join([k, map1[k], map2[k]]))

实际的任务文件有数十亿行,是否有更快的解决方案,无需加载所有内容并保留哈希图/字典?

也许使用 unix/bash 命令?对文件进行预排序会有帮助吗?


The join命令有时很难使用,但这里很简单:

join -t $'\t' <(sort file1.txt) <(sort file2.txt)

使用 bash 的ANSI-C 引用 https://www.gnu.org/software/bash/manual/bash.html#ANSI_002dC-Quoting指定制表符分隔符,以及流程替代 https://www.gnu.org/software/bash/manual/bash.html#Process-Substitution将程序输出视为文件。

要查看输出,请将以上内容通过管道传输到cat -A查看表示为的选项卡^I:

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

如何从两个制表符分隔的文件中获取枢轴线? 的相关文章

随机推荐

  • 从临时服务器连接到 GitoLite 时出错 - ECONNREFUSED 部署错误

    我在尝试将以前工作的项目部署到开发服务器时遇到了一些麻烦 我没有设置系统 但我确实拥有我需要的所有凭据 我认为 在尝试 cap staging 部署之后 我到目前为止 然后它产生了一个错误 请看下面 triggering load call
  • sed 用 C++ 注释替换(单行)C 注释

    我如何使用 sed 将源文件中的所有 C 风格注释替换为 C 风格 所有这些 int main some comments to int main some comments 所有注释都是单行 并且代码之间没有像这样的注释 int f in
  • 多层神经网络不会预测负值

    我已经实现了一个多层感知器来预测输入向量的正弦 这些向量由随机选择的四个 1 0 1 组成 偏差设置为 1 网络应该预测向量内容之和的 sin 例如 输入 输出 Sin 0 1 1 0 1 我遇到的问题是网络永远不会预测负值 并且许多向量的
  • 初始化 tkinter 类的父级/主控是什么?

    Note 示例代码是一个删节版本 但可以运行基本功能 请重点关注class MainWindow tk Frame 问题 什么样的object可以起到parent or master for tkinter class初始化 我的例子 看示
  • OpenGL重叠丑陋的渲染

    我正在尝试使用 OpenGL 2 1 渲染场景 但重叠形状的边框很奇怪 我测试了一些 OpenGL 初始化 但没有任何改变 我将问题简化为一个简单的测试应用程序 其中有 2 个球体 但结果相同 我尝试了一些关于 Gl DEPTH TEST
  • 警告:未找到提供程序 com.sun.xml.internal.bind.v2.ContextFactory

    我在 JSF 应用程序中集成了一些 Web 服务Jersey 一切正常 甚至 OAuth 识别也正常 但 当启动我的网络服务器时 我总是收到此错误 INFO Scanning for root resource and provider c
  • csrf 与 ajax 和 django post

    使用jquery v1 7 1和django 1 3 我试图通过ajax发出post请求 在我找到的一些教程代码中web http lethain com intro to unintrusive javascript with djang
  • 如何获取javafx中子节点的访问权限?

    我有一棵这样的树 正如您所看到的 GridPane 有 10 列 它们每个都包含包裹在 AnchorPane 中的 BorderPane 每个 BorderPane 由 2 个标签和 1 个单选按钮组成 您可以在下面看到它的样子 我想问您如
  • 如何从 javascript HTMLCollection 获取元素

    我不明白为什么我无法从 HtmlCollection 获取元素 此代码示例 var col document getElementsByClassName jcrop holder console log col 在控制台上产生以下输出 我
  • cv::warpPerspective 仅显示扭曲图像的一部分

    我使用 getHomography 和 warpPerspective 将图像从前视角更改为中视角 它的工作原理是图像扭曲到所需的视角 但裁剪被关闭 它将扭曲的图像大部分移动到图像框之外 我认为原因是因为操作导致负坐标 我已经手动计算了用于
  • Web API 令牌方案的好方法是什么?

    我正在为一个 Web 应用程序开发 REST API 到目前为止 我们已经在内部为几个配套应用程序开发了该 API 现在 我们正在考虑向外部开发人员开放 我们希望向 API 添加令牌 以帮助识别谁在发出请求 并总体上帮助管理其使用 此时 我
  • Jinja2 填充和对齐字符串

    我想实现类似的目标 https pyformat info string pad align https pyformat info string pad align 在 Jinja2 中 在 python 中 如果我希望字符串始终具有一定
  • 类型推断失败:没有足够的信息来推断参数请明确指定

    我正在尝试用 Kotlin 编写 Vaadin 应用程序 对于数据绑定 Vaadin 8 现在提供了类型安全数据绑定的可能性 在 Kotlin 中 我期望这样的工作 class LoginModel var username String
  • Formik 验证 isSubmitting / isValidating 未设置为 true

    我有一个用户要求的表格 我非常明显地表明该表格无效 所以我打算弹出一个sweetalert对话框让他们知道他们需要仔细检查表格 我想我可以在验证中这样做 以便在提交尝试失败时提醒他们 const validate values gt con
  • VBScript 中的 CRLF

    我是 VBScript 新手 我正在尝试编写一个函数来识别打印行中是否有 CRLF 你能帮我么 谢谢 你可以简单地使用result Instr yourString vbCRLF 如果 CRLF 字符序列存在于中 它将返回大于 0 的索引y
  • 如何在javascript中为隐藏变量分配空值?

    我有一个名为 str 的隐藏输入变量 我正在为其分配 abc 值 然后我尝试分配空值 或者说对它的空引用 但我不能 Edit 代码的一部分 隐藏领域
  • 为什么哈希的字符串键被冻结?

    根据规格 http www ruby doc org core 1 9 3 Hash html method i store 用作哈希键的字符串被复制并冻结 其他可变对象似乎没有这样特殊的考虑 例如 使用数组键 可以进行以下操作 a 0 h
  • 开玩笑,在 GitLab 上找不到命令

    我想在 GITLAB 上使用 JEST 执行单元测试 但它似乎不起作用 它可以在我的本地计算机上运行 但不能在 GitLab 上运行 整个代码为 gitlab ci yml image node 16 cache paths node mo
  • exec sp_updatestats 的作用是什么?

    有什么用sp updatestats 我可以在生产环境中运行它以提高性能吗 sp updatestats更新数据库中所有表的所有统计信息 甚至单行已更改 它使用默认示例来执行此操作 这意味着它不会扫描表中的所有行 因此它可能会生成不如替代方
  • 如何从两个制表符分隔的文件中获取枢轴线?

    给定两个文件file1 txt abc def t 123 456 jkl mno t 987 654 foo bar t 789 123 bar bar t 432 and file2 txt foo bar t hello world