我只想显示第二列
这是我的密码
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
这是文本文件
^{pr2}$我必须在第二个文本文件的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
你有两个不同的问题。第一个是标题中的一个——如何只获得第二列的值。在
检索第二列的值
您的
line.split(None, 2)[1:]
同时返回行中的第二项和第三项的原因是它被告知要这样做。在末尾使用[1:]
意味着返回列表中的第二项和所有后续项(因为:
和{a1})。如果只想返回列表中的第二项,请使用line.split(None, 2)[1]
。在测试另一个文件中的行
第二个问题是如何使用第一个文件中的值来测试第二个文件中的值。您当前的代码似乎在大部分情况下都能做到这一点,但是您没有任何代码来捕获所谓的“描述”行。另外,我们还不清楚为什么我们应该使用
csv.writer
来创建一个看起来不是.csv
格式的文件。在相关问题 更多 >
编程相关推荐