我想只显示第二列
这是我的代码
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
我只想显示第二列,但它也用它来展示第三列
这是文本文件
E5 BAT One
E5 BALL Two
E5 CRICKET Three
我必须找到位于Bat
文本文件
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并忽略|
之后的值,如果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
答案 0 :(得分:3)
为什么不在拆分后对行进行索引?
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上它是一个类似集合的对象)。当然,由于这是一本字典,原始文件中的所有订单都会丢失。