我有三个tsv文件
文件1:
1 Alice 24
10 Bill 23
4 Ellen 24
9 Mike 30
文件2:
6 Julie 76
2 Bob 42
7 Tom 54
5 Frank 30
1 Alice 24
文件3:
3 Dave 68
8 Jerry 34
1 Alice 24
5 Frank 30
2 Bob 42
输出: 我的期望输出是从任何tsv文件中删除第一列和第二列值相同的所有行,并保持其他行不变
文件1:
10 Bill 23
9 Mike 30
4 Ellen 24
文件2:
6 Julie 76
7 Tom 54
文件3:
3 Dave 68
8 Jerry 34
我的tsv文件是无头的。到目前为止,我已经尝试了以下代码
with open('file2.tsv') as check_file:
check_set = set([row.split('\t')[0].strip().upper() for row in check_file])
with open('file1.tsv', 'r') as in_file, open('file3.tsv', 'w') as out_file:
for line in in_file:
if line.split('\t')[0].strip().upper() in check_set:
out_file.write(line)
但是我没有用这段代码得到我想要的三个输出文件。任何帮助都将不胜感激。提前谢谢
您首先需要读取所有TSV文件,并计算前两列的每次出现次数。Python的^{} 可以用于此(基于字典)
读取中的每一行时,将其保存在} 可以避免在追加新条目之前,如果条目不存在,就必须添加条目
data
字典中,其中键是文件名,内容是前两个值以及原始行的列表。使用^{在读取中的所有内容之后,
counts
现在可以用来确定任何给定行是否只看到一次,其他值可以跳过我建议您添加
print()
语句,以便更好地理解每个变量所包含的内容,例如print(counts)
和print(data)
注意:取出
'x' +
当准备好时,这是为了将输出文件写入稍微不同的文件名,以避免在测试时覆盖原始文件相关问题 更多 >
编程相关推荐