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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python获取当前时间的时间戳_python将时间戳转化为时间格式

    python获取当前时间的时间戳_python将时间戳转化为时间格式经常遇到处理时间与获取当前时间,之前记录了一版Scala版本的,现在记录一下Python版本的:Tip:导入类importtimeimportdatetime一.获取时间1.获取当前时间now=datetime.datetime.now()printnowprintnow.yearprintnow.monthprintnow.dayprintnow.hourprintnow….

    2022年10月2日
    2
  • k8s 裸机安装 nginx1.19 ingrass

    k8s 裸机安装 nginx1.19 ingrass

    2021年5月14日
    101
  • 模2除法(CRC校验码计算)_crc校验模二算法

    模2除法(CRC校验码计算)_crc校验模二算法鉴于网上的讲解自己好不容易才看懂…所以自己整理了一下,也方便大家能够理解如果有不对或者不准确的地方,恳请大家指出…模2加减法模2除法需要用到模2加减法,关于模2加减法,其实就是异或操作,规则如下://不需要考虑进位和借位0±0=01±1=00±1=11±0=1例:1101±1001=0100计算如下:…

    2025年8月20日
    3
  • mqttnet 详解_MQTTnet 3.0.5学习笔记

    mqttnet 详解_MQTTnet 3.0.5学习笔记段时间在使用MQTTnet,都说这个东西比较好,可是翻了翻网上没有例子给参考一下。今天算是找到了,给高手的帖子做个宣传吧.由于GitHub上介绍的东西比较少,以我的水平真是不知道怎么用,先照葫芦画瓢,再看看怎么回事吧:功能:把订阅与发布做成一个类,还带有自动重连的功能usingSystem.Threading;usingSystem.Threading.Tasks;usingMQTTnet;usi…

    2022年6月25日
    60
  • cbow和skipgram适用于什么场景?_gram矩阵

    cbow和skipgram适用于什么场景?_gram矩阵在cbow方法中,是用周围词预测中心词,从而利用中心词的预测结果情况,使用GradientDesent方法,不断的去调整周围词的向量。当训练完成之后,每个词都会作为中心词,把周围词的词向量进行了调整,这样也就获得了整个文本里面所有词的词向量。要注意的是,cbow的对周围词的调整是统一的:求出的gradient的值会同样的作用到每个周围词的词向量当中去。可以看到,cbow预测行为的次数跟整个文本的…

    2022年9月6日
    5
  • Maven配置及IDEA中配置Maven详解

    Maven配置及IDEA中配置Maven详解1、Maven安装配置首先到官网下载http://maven.apache.org/download.cgi 我们需要下载的bin.zip结尾的文件,下载后解压到指定文件夹(全英文路径) 配置环境变量确保JAVA环境变量已经配置好了。添加M2_HOME和MAVEN_HOME环境变量到Windows环境变量。 PATH变量添加%M2_HOME%\bin修…

    2022年5月11日
    82

发表回复

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

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