gpt4 book ai didi

python - 比较 2 个文件的数据

转载 作者:行者123 更新时间:2023-11-30 23:03:44 34 4
gpt4 key购买 nike

我刚刚开始学习,对于任何困惑,我深表歉意。

我有 2 个文件。文件 A 包含我感兴趣的样本名称列表。文件 B 包含所有样本的数据。

File A (no headers)

sample_A
sample_XA
sample_12754
samples_75t

File B

name description etc .....
sample_JA mm 0.01 0.1 1.2 0.018 etc
sample_A mm 0.001 1.2 0.8 1.4 etc
sample_XA hu 0.4 0.021 0.14 2.34 etc
samples_YYYY RN 0.0001 3.435 1.1 0.01 etc
sample_12754 mm 0.1 0.1 0.87 0.54 etc
sample_2248333 hu 0.43 0.01 0.11 2.32 etc
samples_75t mm 0.3 0.02 0.14 2.34 etc

我想比较文件 A 和文件 B 并输出 B 中的数据,但仅限于 A 中列出的样本名称。

我尝试过这个。

#!/usr/bin/env python2

import csv

count = 0

import collections
samples = collections.defaultdict(list)
with open('FILEA.txt') as d:
sites = [l.strip() for l in f if l.strip()]

###This gives me the correct list of samples for file A.

with open('FILEB','r') as inF:
for line in inF:
elements = line.split()
if sites.intersection(elements):
count += 1

print (elements)

## 这里我获取了文件 B 中所有样本的名称,并且仅获取了名称。我想要文件 B 中的数据,但仅获取 A 中样本的数据。

然后我尝试使用和交集。

#!/usr/bin/env python2

import sys
import csv
import collections

samples = collections.defaultdict(list)
with open('FILEA.txt','r') as f:
nsamples = [l.strip() for l in f if l.strip()]

print (nsamples)

with open ('FILEB','r') as inF:
for row in inF:
elements = row.split()
if nsamples.intersection(elements):
print(row[0,:])

还是不行。

What do I have to do to get the output data as follows:
name description etc .....
sample_A mm 0.001 1.2 0.8 1.4 etc
sample_XA hu 0.4 0.021 0.14 2.34 etc
sample_12754 mm 0.1 0.1 0.87 0.54 etc
sample_75t mm 0.3 0.02 0.14 2.34 etc

任何想法都将非常感激。谢谢。

最佳答案

filea 中创建一组行,然后将 fileb 中的每一行拆分一次,并查看第一个元素是否在 filea< 的数据集中:

with open("filea") as f, open("fileb") as f2:
# male set of lines stripping newlines
# so we can compare properly later i.e foo\n != foo
st = set(map(str.rstrip, f)) # itertools.imap python2
for line in f2:
# split once and extract first element to compare
if line.strip() and line.split(None, 1)[0] in st:
print(line.rstrip())

输出:

sample_A                 mm           0.001        1.2     0.8      1.4    etc
sample_XA hu 0.4 0.021 0.14 2.34 etc
sample_12754 mm 0.1 0.1 0.87 0.54 etc
samples_75t mm 0.3 0.02 0.14 2.34 etc

关于python - 比较 2 个文件的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33987425/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com