python - 比较 CSV 文件中列中的条目并提取匹配项 - python

标签 python csv compare hash

我有两个 CSV 文件(三列),我需要比较它们并从其他匹配的文件(五列)中提取行。文件的示例是:

文件1:

ATGCGCGACAGT, ch3, 123546
ATGCATACAGGATAT, ch2, 5141561615

......大约有 100 个条目

文件2:

ATGCGGCGACAGT,ch3, 123456,mi141515, AUCAGCUAUAUAU, UACGCAGAUAUAUA
ATCAGACGATTATGA, ch4, 4564764, mi653453, AUCAGCAAUUUUCG, AUACAGACAAAAA

....大约有 50000 个条目

我需要匹配这两个文件的列 1、2 和 3,使文件 1 的所有三列都应与文件 2 匹配。如果发生这种情况,则提取 4,5 和 6 列进行进一步处理。

我在想:

fhout=csv.writer(open('parsed_out', 'w'), delimiter=',')

for i in file1:

     a=[0]
     b=[1]
     c=[2]
      for x in file2:
       d=[0]
       e=[1]
       f=[2]
       g=[3]
       h=[4]
       i=[5]
         if a==d and b==e and c==f:
           fhout.writerow([g]+[h]+[i])
         else:
           pass

但有人告诉我,我可以使用散列或一些更好的方法,而不是为 file1 中的 10,000 或更多条目编写如此大的循环

请建议我实现此目标的更好方法。文件 1 和文件 2 都是从更复杂的文件中解析出来的。

最佳答案

下面按照您的建议使用集合理解为第一个文件创建哈希:

S = {tuple(line) for line in csv.reader(File1)}

然后在读取第二个文件时查找速度要快得多。

for line in csv.reader(File2):
    key = tuple(line[:3])
    if key in S:
        print(line)

关于python - 比较 CSV 文件中列中的条目并提取匹配项 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475937/

相关文章:

java - ComperatorFactory 使用静态方法还是每个方法都在自己的类中?

javascript排序,比较3种不同类型并按顺序排序

Python 撤消 Unicode

python - Scrapy 在 "__init__"之后不调用任何其他函数

python - 我们如何在 Django 中拥有多个身份验证系统?

csv - 从 CSV 文件输入数据到 logstash

php - 如何使用php将数据从csv文件保存到数据库

python - 使用循环从列表创建子图。使数据绘制到两个子图上

python - 将 2 个 csv 文件与一个唯一列但不同的标题合并

java - 比较可能以不同内部顺序出现的字符串