首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地遍历两个文件,比较两个文件中的字符串

如何正确地遍历两个文件,比较两个文件中的字符串
EN

Stack Overflow用户
提问于 2014-02-13 07:08:14
回答 3查看 98关注 0票数 0

我正在尝试比较两个csv文件,并期望此输出,但不能成功。下面是我的示例和代码:

File1.csv

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
meNOG06332  9606.ENSP00000344967    1   322

meNOG00110  9606.ENSP00000349259    1   2364

meNOG00018  10090.ENSMUSP00000027367    1   261

meNOG00018  10090.ENSMUSP00000072852    1   276

代码:

代码语言:javascript
复制
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

但是这段代码只搜索第一行。

EN

回答 3

Stack Overflow用户

发布于 2014-02-13 07:16:20

我不确定这就是你要找的东西,但因为这还不清楚:

如果您正在寻找两个文件之间的重叠,并且希望比较整个行,则可以创建两个集合(每个文件一个)并输出交集:

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2014-02-13 07:28:10

我不确定你想要什么格式的结果,但是为了比较两个文件,你可以使用标准的python模块:

http://docs.python.org/2/library/difflib.html

您可以分析输出,并根据需要设置格式

票数 0
EN

Stack Overflow用户

发布于 2014-02-13 09:10:51

您可以将这两个文件压缩在一起:

代码语言:javascript
复制
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

如果第一个文件是:

代码语言:javascript
复制
a
s
d
f

第二个文件是:

代码语言:javascript
复制
q
w
e
r

输出将为:

代码语言:javascript
复制
a q
s w
d e
f r
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21741887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档