Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何循环和比较线对?_Python_Python 3.x_Loops_File Handling - Fatal编程技术网

Python 如何循环和比较线对?

Python 如何循环和比较线对?,python,python-3.x,loops,file-handling,Python,Python 3.x,Loops,File Handling,我有两个这样的文件 file1 = open('file1.txt', 'r', encoding="utf8") file2 = open('file2.txt', 'r') for line1 in file1: #loop file1 L1 = line1.split() #split to array if(L1[0] == 'e'): print("line1 " + line1) for line2 in file2

我有两个这样的文件

file1 = open('file1.txt', 'r', encoding="utf8")
file2 = open('file2.txt', 'r')

for line1 in file1:     #loop file1

    L1 = line1.split()   #split to array

    if(L1[0] == 'e'):
        print("line1 " + line1)

        for line2 in file2:  #loop file2

            L2 = line2.split()   #split to array

            if(L2[0] == 'e'):
                print("line2 " + line2)

                if(L2[3] == L1[3]):  #check rrr same

                    print("OK")
文件1

e10购买力平价
e 3 1存款准备金率
e 3 2 rrr
文件2

e10rrr
我想分割每一行代码来比较数组[3],如果行中的rrr相同,它应该打印
OK
。我这样写代码

file1 = open('file1.txt', 'r', encoding="utf8")
file2 = open('file2.txt', 'r')

for line1 in file1:     #loop file1

    L1 = line1.split()   #split to array

    if(L1[0] == 'e'):
        print("line1 " + line1)

        for line2 in file2:  #loop file2

            L2 = line2.split()   #split to array

            if(L2[0] == 'e'):
                print("line2 " + line2)

                if(L2[3] == L1[3]):  #check rrr same

                    print("OK")
当我运行代码时,它会打印以下内容:

line1e10购买力平价
线路2 e 1 0 rrr
线路1 e 3 1 rrr
线路1 e 3 2 rrr
代码是循环中的循环,我想这样显示结果:

line1e10购买力平价
线路2 e 1 0 rrr
线路1 e 3 1 rrr
线路2 e 1 0 rrr
线路1 e 3 2 rrr
线路2 e 1 0 rrr

如何修改代码以比较文件的每一行?

基本上,您需要跟踪两个文件的最后一行。如果文件中的任何一个较小,并且在另一个之前完成迭代。 您需要将当前行与另一个文件中的前一行进行比较

这个怎么样

prev_f1_token = None
prev_f1_line = None

prev_f2_token = None
prev_f2_line = None

with open('file1.txt') as f1:
    with open('file2.txt') as f2:
        for line in f1:
            prev_f1_token = line[0]
            prev_f1_line = line
            for line in f2:
                prev_f2_token = line[0]
                prev_f2_line = line

            if(prev_f1_token == 'e'):
                print("line1 ", prev_f1_line)

            if (prev_f2_token == 'e'):
                print ("line2 ", prev_f2_line)

                if(prev_f2_line.split()[3] == prev_f1_line.split()[3]):  #check rrr same
                        print("OK")

您编写的代码比需要的代码多得多,如果代码缩进过多,继续编写并不总是一个好主意。这是我试图打印你想要的,我相信这可以缩短更多

您可以在此处使用
itertools.cycle
(如果列表较短,则返回循环迭代器)


文件对象迭代器只适用于一次过程。我相信这是你的问题。