如何显示仅第二列,并且比第二个文本文件

问题描述:

我想只显示第二列比较,如何显示仅第二列,并且比第二个文本文件

这是我的代码

with open('try.txt', 'rb') as file1: 
    file1_data = dict(line.split(None, 2)[1:] for line in file1 if line.strip()) 
print file1_data 

我只想显示第二列,但它与它

也diplaying 3这是文本文件

E5 BAT One 
E5 BALL Two 
E5 CRICKET Three 

比我找到Bat这是textfile1的第二列second文本文件

?Bat03|Batsman 
    This is the goods of cricket 
    ?Balt|Bowler 
    Both can be use by batsman and bowler 
    ?Bat133|Swimmer 
    Swiming is the best exercise 

所以Bat这是textfile1我们转到第二个文本文件的第二栏,并找到蝙蝠和|后忽略的值,如果在第二Bat|之前文本文件中找到比它显示

with open('second.txt', 'rb') as file2, open('output.txt', 'wb') as outputfile: 
    output = csv.writer(outputfile, delimiter='|') 
    for line in file2: 
     if line[:1] == '?': 
      row = line.strip().split('|') 
      key = row[0][1:] 
      if key in file1_data: 
       output.writerow(row + [file1_data]) 
     else: 
      outputfile.write(line) 

Required output

?Bat03|Batsman 
     This is the goods of cricket 
?Bat133|Swimmer 
     Swiming is the best exercise 
+1

你的意思是专栏,对吧? – 2013-05-10 12:43:48

+0

@JakubM。是的,对不起 – Rocket 2013-05-10 12:45:50

+0

@mgilson我进一步解释它 – Rocket 2013-05-10 12:55:28

为什么不直接在分割后索引该行?

line.split()[1] 

代替:

line.split(None,2)[1:] 

当然,这不会是高兴的字典任。我不知道你为什么在那里有一个字典。如果对你来说都一样,我建议你使用list来代替。

file1_data = [line.split()[1] for line in file1 if line.strip()] 

如果你真的想保留字典,那么你已经几乎得到你想要的。第一列可以从file1_data.keys()构建,它返回一个迭代(在python2.x上它是一个列表,在python3.x中它是一个类集对象)。当然,由于这是一本字典,因此原始文件的所有订单都将丢失。

+0

我必须在我的进一步的代码中使用键,这就是使用字典 – Rocket 2013-05-10 12:47:49

+0

@Angel - 如果是这样的话,你需要更明确地说明你想要作为关键和你想要的价值。在你的代码中,第二列可以通过'file1_data.keys()'访问,而其余的行是'file1_data.values()'。 – mgilson 2013-05-10 12:49:07

+0

我解释我的工作,希望现在可以理解你 – Rocket 2013-05-10 12:55:52