从匹配列的条目中打印标题

时间:2018-12-06 01:26:20

标签: python

我想打印列标题,数据列中的条目与其余列条目匹配。

我有以下格式的文本文件(test1.txt):

data      a1    a2    a3    a4
a         bb    aa    cc    dd
a         bb    cc    aa    dd
b         bb    cc    cc    dd
b         bb    bb    cc    bb

预期输出:

a2, a3, a1, a1, a2, a4 

我在做什么:

with open("test1.txt",'rU') as ij:
    i = ij.readlines()
    for j in i:
         j = j.rstrip().split('\t')
         for r in j[1:]:
              if r.startswith(str(j[0])):
                   print(r)

我得到的是什么

aa
aa
bb
bb
bb
bb

有什么提示吗?谢谢

1 个答案:

答案 0 :(得分:0)

原因是因为您正在打印r,它的值与当前data的值匹配,而不是与列标题匹配。

要获取列标题,请阅读第一行并将其保留为列表。然后在找到匹配项时打印标题值

with open("test1.txt",'rU') as ij:
    firstLine = ij.readline()
    headers = firstLine.rstrip().split('\t')[1:] # get headers

    i = ij.readlines() # read the rest of the data
    for j in i:
         j = j.rstrip().split('\t')
         for r in range(len(j[1:])): # loop based on index
              if j[1+r].startswith(str(j[0])): # use j[1+r]
                   print(headers[r]) # print headers instead