我想只显示第二列
这是我的代码
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
E5 Bat03 Four
E5 Bat133 Five
我必须在第二个文本文件中找到位于textfile1第二列的Bat
Secondtextfile
?Bat03|Batsman
This is the goods of cricket
Usually cricketers use it
it is game
?Balt|Bowler
Both can be use by batsman and bowler
?Bat133|Swimmer
Swiming is the best exercise
所以在textfile1
的第二列中的Bat我们转到second text file
并找到Bat03和Bat133并忽略|
之后的值,如果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)
必需的输出
?Bat03|Batsman
This is the goods of cricket
This is the goods of cricket
Usually cricketers use it
it is game
?Bat133|Swimmer
Swiming is the best exercise
答案 0 :(得分:1)
您有两个不同的问题。第一个是标题中的一个 - 如何获得第二列的值。
检索第二列的值
你line.split(None, 2)[1:]
返回行中第二项和第三项的原因是因为它被告知这样做。最后使用[1:]
表示返回列表中的第二项和所有后续项(由于:
和list slicing。如果您只想返回列表中的第二项,使用line.split(None, 2)[1]
。
测试另一个文件中的行
您的第二个问题是如何使用第一个文件中的这些值来测试第二个文件中的值。您当前的代码似乎在大多数情况下都是这样做的,但是您没有任何代码来捕获可能被称为“描述”行的代码。此外,我们还不清楚为什么要使用csv.writer
创建一个看似不是.csv
格式的文件。
with open('second.txt', 'rb') as file2, open('output.txt', 'wb') as outputfile:
output = ""
file2lines = file2.readlines()
for i in range(len(file2lines)):
line = file2lines[i]
if line[0] == '?':
row = line.strip().split('|')
key = row[0][1:]
if key in file1_data:
output += line + "\t" + file2lines[i+1]
outputfile.write(output)