簡體   English   中英

如何正確遍歷兩個文件,比較兩個文件中的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM