![](/img/trans.png)
[英]how to properly loop through two files comparing strings in both files against each other
[英]How to properly loop through two files, comparing strings in both files
我正在嘗試比較兩個csv文件,並期望此輸出但無法成功。 這是我的示例和代碼:
File1.csv
meNOG00110,9606.ENSP00000349259,1,2364
meNOG06332,9606.ENSP00000344967,1,322
meNOG06773,9606.ENSP00000344961,1,379
meNOG03133,9606.ENSP00000387429,1,2089
meNOG17468,9606.ENSP00000217169,1,298
File2.csv
meNOG06332,9606.ENSP00000344967,1,322
meNOG00110,9606.ENSP00000349259,1,2364
meNOG00110,9606.ENSP00000357130,1,2419
meNOG00018,10090.ENSMUSP00000027367,1,261
meNOG00018,10090.ENSMUSP00000072852,1,276
output.txt
meNOG06332 9606.ENSP00000344967 1 322
meNOG00110 9606.ENSP00000349259 1 2364
meNOG00018 10090.ENSMUSP00000027367 1 261
meNOG00018 10090.ENSMUSP00000072852 1 276
碼:
file1 = open("File1.csv", "rU")
reader1 = csv.reader(file1,delimiter=',')
file2 = open("File2.csv", "rU")
reader2 = csv.reader(file2,delimiter=',')
for row2 in reader2:
for row1 in reader1:
if row2[1].startswith('9606'):
if row2[1] == row1[1]:
print row2
else:
print row2
但是此代碼僅搜索第一行。
我不確定這正是您要尋找的東西,但是因為不清楚:
如果要查找兩個文件之間的重疊,並且要比較整行,則可以設置兩組(每個文件一組)並輸出交集:
with open('File1.csv', 'r') as infile1,
open('File2.csv', 'r') as infile2,
open('File3.csv', 'w') as outfile:
lines1 = set(infile1)
lines2 = set(infile2)
writer = csv.writer(outfile, delimiter=',')
for line in (lines1 & lines2):
writer.writerow(line)
我不確定您期望的結果格式是什么,但是為了比較兩個文件,您可以使用標准python模塊進行coulf:
http://docs.python.org/2/library/difflib.html
您可以分析輸出,並根據需要設置格式
您可以將兩個文件壓縮在一起:
with open(path_a, 'r') as a, open(path_b, 'r') as b:
for line_a, line_b in zip(a, b):
print line_a, line_b
如果第一個文件是:
a
s
d
f
第二個文件是:
q
w
e
r
輸出將是:
a q
s w
d e
f r
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.