我有两个不同的文件。
我需要将这些合并到一个文件中。有一个共同的价值。这两个文件都有这种格式。比赛不会按顺序进行。 Dataset1 line1可能与dataset2 line1不匹配。更有可能的是,dataset1 line1将匹配dataset2第16行或第45行。
粗体是匹配值。任何方向帮助将不胜感激。
BEEC,BE-EC,,154.7,46.07,,31.63,54.6,4833.6,5.06 BPLZ,BE-LZ,,390.6,62.62,,49.0,145.0,27.3,61.52 BFLP,BF-OP,,180.1,34.89,,40.0,58.26,8533.8,7.31 MRM1234-BEEC-1635753E001 25.6 70.29 MRM1234-BPLZ-1814737E003 8.12 18.13 MRM1234-BFLP-2470883E001 12.92 18.8
我知道如何使用line.split
来获取每个元素的数组。
我知道如何计入第二个数据集的第一列L[6:4]
以获得匹配的4个字母值。
我尝试了几种方法,但没有成功。
如何合并由唯一4位数字标识符连接的单行中的所有列?匹配唯一值然后写入一行就不包括在内。
答案 0 :(得分:2)
档案dat1
的内容:
BEEC,BE-EC,,154.7,46.07,,31.63,54.6,4833.6,5.06
BPLZ,BE-LZ,,390.6,62.62,,49.0,145.0,27.3,61.52
BFLP,BF-OP,,180.1,34.89,,40.0,58.26,8533.8,7.31
档案dat2
的内容:
MRM1234-BEEC-1635753E001 25.6 70.29
MRM1234-BPLZ-1814737E003 8.12 18.13
MRM1234-BFLP-2470883E001 12.92 18.8
使用此快速&脏脚本连接两个文件的行,如上所述。
dat1 = {}
with open('dat1') as f:
for line in f.readlines():
dat1[line.split(',')[0]] = line.strip().split(',')[1:]
dat2 = {}
with open('dat2') as f:
for line in f.readlines():
key = line.strip().split()[0].split('-')[1]
dat2[key] = line.strip().split()[1:]
for key in dat1.keys():
print("%s,%s,%s" % (key, str.join(',', dat1[key]), str.join(',', dat2[key])))
这将产生以下输出。
BFLP,BF-OP,,180.1,34.89,,40.0,58.26,8533.8,7.31,12.92,18.8
BEEC,BE-EC,,154.7,46.07,,31.63,54.6,4833.6,5.06,25.6,70.29
BPLZ,BE-LZ,,390.6,62.62,,49.0,145.0,27.3,61.52,8.12,18.13
答案 1 :(得分:0)
抱歉一塌糊涂......
def parse(d1, d2):
d1 = d1.split('\n')
data1 = [x.split(',') for x in d1 if x]
d2 = d2.split('\n')
data2 = [x.split(' ') for x in d2 if x]
target = []
for x in data2:
d = [y for y in x if y]
dd = d[0].split('-')
dd.extend(d[1:])
target.append(dd)
ret = []
while data1:
x = data1.pop()
for y in target:
if x[0] == y[1]:
z = x
z.extend(y[-2:])
ret.append(z)
for x in ret:
print(x)
parse(data1, data2)
其中data1,data2是文件的内容