Python:匹配两个文件中的两列?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (614)

我想创建一个Python脚本,它与输入文件的前两列匹配(文件1)

10000D 10000R
10003D 10003R

并在保存数据集的另一个输入文件(文件2)中将这两列匹配到第2列和第4列。

0 10000D 0 10000R 0.05
0 10001D 0 10001D 0.06
0 10003D 0 10003R 0.09

一旦这些列匹配,我想打印出与文件2匹配的文件1中的列保存在新的输出文件中的行。输出文件应该如下所示:

0 10000D 0 10000R 0.05
0 10003D 0 10003R 0.09

我的代码如下所示:

#Python code for pi-hats extraction

#!/usr/bin/python

#open and read file to read from (F1), file to match to (F2), File to write and save to (F3)

F1 = open("File_1", "r") #File_1 is original file, has 2 columns
F2 = open("File_2", "r") #where dataset is kept
F3 = open("File_3", "w") #where matches are stored

for match1 in sorted(F1):
    if match1 in F2:
        F3.write(match)
        F3.close()
exit

但是,当我运行这个代码时,我没有得到任何匹配。 有什么建议么?

提问于
用户回答回答于
import csv

with open("File_1", "r") as F1:  #File_1 is original file, has 2 columns
    # split the file using a space as delimiter and read it to the memory:
    F1_d = sorted(csv.reader(F1, delimiter=' ')) 

with open("File_2", "r") as F2:  #where dataset is kept
    # split the file using space again, and read it to a dictionary
    # structure indexed by second and forth columns:
    F2_d = {(row[1], row[3]): row for row in csv.reader(F2, delimiter=' ')}

with open("File_3", "w") as F3: #where matches are stored
    for match1 in F1_d: 
        if tuple(match1) in F2_d: # search for a match using the index defined
            F3.write(' '.join(F2_d[match1]) + '\n')

热门问答

两台腾讯云的服务器在同一个地区,内网网段也相同,都是172.17.0.X,为啥ping内网地址不通?

HappyLau谈云计算

腾讯云 · 云计算高级工程师 (已认证)

专注于公有云,私有云解决方案,在kubernetes,openstack,kvm,ceph,linux,shell有丰富的实战经验。
推荐已采纳

首先看下两台机器是否在同个vpc内,在同个vpc内默认网络可以互通,如果不在同个vpc内需要通过对等连接或者云联网打通,如果在同个vpc下无法互通,请检查下安全组和os的防火墙规则,放行icmp连接。

COS AndroidSDK类型说明哪里有?

rickenwang

腾讯 · 客户端开发工程师 (已认证)

推荐
GetServiceResult 这个类在 'com.tencent.qcloud:cosxml:5.4.29' 包中,简化版 'cosxml-lite:5.4.29' 没有包含GetServiceResult; 另外你说的 CosXmlService 、QCloudCreden...... 展开详请

只用云存储不用CDN加速,访问云存储上的内容使用的是云服务器上的流量么?这种访问收流量费么?

Lew

腾讯云对象存储 · 工程师 (已认证)

推荐

GME Demo 用Unity 打包Internal 包 闪退?

腾讯音视频小蔡

深圳市腾讯科技 · 软件开发工程师 (已认证)

QQ:471381568
推荐

你好,发生此情况的原因大概率是没有打包GME v8a架构所导致。请检查一下打包出来的apk是否有Android v8a 的相关so文件。

腾讯服务器怎么回事?怎么突然就无法连接了?

HappyLau谈云计算

腾讯云 · 云计算高级工程师 (已认证)

专注于公有云,私有云解决方案,在kubernetes,openstack,kvm,ceph,linux,shell有丰富的实战经验。
推荐
无法登录的原因有很多,可以按照如下步骤检查: 1. 通过vnc登录,检查系统是否启动 2. 检查操作系统的防火墙iptables或windows防火墙 3. 检查安全组是否放行了登录端口和icmp 按照上述步骤排查,大部分问题都可以解决。... 展开详请

短视频TXLiteAVSDK,使用iOS 13编辑出现花屏现象?

所属标签

扫码关注云+社区

领取腾讯云代金券