python匹配两个文件中相同的内容

python匹配两个文件中相同的内容data_small.txt中内容如下:34305258139732data_big.txt中内容如下:343 2009-05-30T17:01:58Z 39.04183745 -94.5914053833 9191343 2009-05-28T23:40:31Z 39.0523183095 -94.6074986458 890423 2009-05-28T23:40:31Z 39.0523183095 -94.6074986458 890456 2009-05-27T18:59:50

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

data_small.txt中内容如下:
343 0
5258 1
3973 2
data_big.txt中内容如下:
343 2009-05-30T17:01:58Z 39.04183745 -94.5914053833 9191
343 2009-05-28T23:40:31Z 39.0523183095 -94.6074986458 8904
23 2009-05-28T23:40:31Z 39.0523183095 -94.6074986458 8904
56 2009-05-27T18:59:50Z 39.0424168 -94.59061145 9188
5258 2009-05-15T00:09:42Z 38.9920234667 -94.5920920333 10927
5258 2009-05-27T18:59:50Z 39.0424168 -94.59061145 9188
545 2009-05-15T00:09:42Z 38.9920234667 -94.5920920333 10927
3973 2009-05-14T20:47:20Z 39.0142536 -94.5928215833 12305
3973 2009-05-14T20:43:05Z 39.0146281324 -94.5907831192 9627

需求:将data_big中有data_small第一列所对应的那一行重新写入新的text文件。
即得到new_data.txt如下:
343 2009-05-30T17:01:58Z 39.04183745 -94.5914053833 9191
343 2009-05-28T23:40:31Z 39.0523183095 -94.6074986458 8904
5258 2009-05-15T00:09:42Z 38.9920234667 -94.5920920333 10927
5258 2009-05-27T18:59:50Z 39.0424168 -94.59061145 9188
3973 2009-05-14T20:47:20Z 39.0142536 -94.5928215833 12305
3973 2009-05-14T20:43:05Z 39.0146281324 -94.5907831192 9627

代码:

''' 根据data_small筛选数据集,得到新的小数据集。 '''
fid = open('data_new', 'w')
with open(r'./data_small.txt', mode='r', encoding='utf8') as rf1, open(r'./data_big.txt', mode='r', encoding='utf8') as rf2:
    content1 = rf1.readlines(-1)  # 读取所有行
    content2 = rf2.readlines(-1)
    for i in content1:
        x_1 = i.split()
        for j in content2:
            x_2 = j.split()
            if x_1[0] == x_2[0]:  # 如果相同写入新的文件
                fid.write(j)
        else:
            pass

fid.close()

以上代码时间复杂度太高,可用以下代码:

fid = open('data_new_1', 'w')
with open(r'./data_small.txt', mode='r', encoding='utf8') as rf1, open(r'./data_big.txt', mode='r', encoding='utf8') as rf2:
    content1 = rf1.readlines(-1)  # 读取所有行
    user_id = [line.split()[0] for line in content1]
    content2 = rf2.readlines(-1)
    for j in content2:
        x_2 = j.split()
        if x_2[0] in user_id:  
            fid.write(j)

fid.close()

tips:

r只读,r+读写,文件不存在报错
w只写,w+读写,若文件不存在可创建,新写入内容会覆盖之前内容
a附加写,不可读,a+附加读写,若文件不存在可创建,可追加写,不覆盖

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183611.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机写字板英语,写字板的英文是什么

    计算机写字板英语,写字板的英文是什么写字板我们从小学就看起了,当然它的英语单词我们也是从小学就学习到了。下面是学习啦小编给大家整理的写字板的英文是什么,供大家参阅!写字板的英文是什么blackboard英[ˈblækbɔ:d]美[ˈblækbɔrd]写字板的英语例句1.Tomscrawledonhisslate,”Pleasetakeit–Igotmore.”汤姆在他的写字板上写了几个字:“请…

    2022年7月16日
  • PLC的基本知识_网络基础知识培训

    PLC的基本知识_网络基础知识培训本人接触的比较多的PLC为三菱和欧姆龙,故主要以三菱PLC为例开始记录。在学习PLC之前,首先要明白PLC的优缺点,即为什么要用PLC,直接用PC服务器或者单片机嵌入式不行吗?PLC有五个特点:(1)可靠性高、抗干扰能力强;(2)灵活性好、扩展性能强;(3)控制速度快、稳定性强;(4)延时调整方便,精度高;(5)系统设计安装块、维修方便。其实最重要的就两个字,稳定。像单片机这种负荷一高就烧板子,在电磁干扰强的地方也无法正常工作。PC服务器更是无法胜任多种IO输出,控制现场…

    2022年9月3日
  • 三菱数据移位指令_三菱plc循环与移位指令

    三菱数据移位指令_三菱plc循环与移位指令一、实训任务1、循环移位指令编程:控制要求:应用循环右移指令(ROR)编写8灯循环点亮程序。Y0~Y7分别控制8盏灯,按启动按钮X0后,Y0亮1S→Y0灭、Y1亮1S→Y1灭、Y2亮1S→……→Y7灭、Y0亮周而复始运行,按停止按钮X1后,灯全灭。编写并运行程序,写出运行结果。2、位移位指令编程:控制要求:应用位左移指令(SFTL)编写8灯点亮程序。Y10~Y17分别控制8…

    2022年6月7日
  • [开发者笔记]Odin

    [开发者笔记]Odinhttps://github.com/chkinglee/odin#2020-05-311、elasticsearch搭建与启动2、springboot集成elasticsearchNote:在这里没有参照网上的方法添加elasticsearch的依赖,而是利用httpclientUtil写了一个EsUtil,对elasticsearch的读写实际是发起的http请求\3、代码思路1)需要能够解析配置文件中的自定义配置参数2)HttpClientUtil、EsUtil,可找…

    2022年7月21日
  • 常用公共数据集[通俗易懂]

    常用公共数据集[通俗易懂]原文链接:http://homepages.inf.ed.ac.uk/rbf/CVonline/Imagedbase.htmCVonline:图像数据库(Google直译的结果,希望对大家有帮助)按主题索引行动数据库属性识别自主驾驶生物/医药相机校准脸和眼/虹膜数据库指纹一般图像一般RGBD和深度数据集一般视频手,掌握,手动和手势数据库图像,视频和形状数据库检索对象数据库人(静),人体姿势人员检测…

    2022年5月18日
  • 实习生 Git 不熟练,还没脸去问是种什么体验…

    实习生 Git 不熟练,还没脸去问是种什么体验…文章目录尴尬Git概述git分区原理Git常用指令设置用户签名初始化本地库查看本地库状态添加暂存区提交本地库修改文件查看历史版本版本Git分支操作分支基本操作查看分支创建分支分支开发切换分支合并分支合并冲突解决Git团队协作机制团队协作跨团队协作远程仓库别名推送本地仓库到远程仓库克隆远程仓库到本地拉取远程库内容尴尬昨儿个我导师给了我个Git相关的小任务,不得不说我导师是真的好,他怕我不会还演示了一遍,奈何我只会gitclone。。。还好他演示的时候把命令都留在终端上了,折腾了半小时.

    2022年5月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号