在两个文件中搜索数据以进行匹配,然后选择记录并写入第三个文件

时间:2019-02-24 22:19:21

标签: python-3.x

使用Python 3加载两个文件,然后使用文件A的数据在文件B中查找记录,然后将该记录写入文件C。

第一步,我试图打开文件A和B,搜索匹配项,然后将匹配项写入文件C,但是它没有生成任何输出。

fileA = open('C:\\tmp\\somefile.csv', 'r')
fileB = open('C:\\tmp\\somefile.txt', 'r')
fileC = open('C:\\tmp\\somefile.txt', 'w')

for line1 in fileA:
    for line1 in fileB:
        if line1 == line1:
            fileC.write("%s\n" %(line1))

一旦我开始生成从文件A和文件B到文件C的匹配字符串,我便可以从文件B中选择记录并将其写入文件C

2 个答案:

答案 0 :(得分:1)

您需要使用.read()方法,如果要匹配beetwen行,可以将它们拆分:

fileA = open('C:\\tmp\\somefile.csv', 'r')
fileB = open('C:\\tmp\\somefile.txt', 'r')
fileC = open('C:\\tmp\\somefile.txt', 'w')

#if you looking for char level match delete .split('\n') 's
for line1 in fileA.read().split('\n'):
    for line12 in fileB.read().split('\n'):
        if line1 and line1 == line2: #your if statement wrong correct it
            fileC.write("%s\n" %(line1))

编辑:在if语句中添加了第1行,用于检查空行。

答案 1 :(得分:0)

您需要通过readlines()读取文件的所有行,然后进行如下比较

fileA = open('C:\\tmp\\somefile.csv', 'r')
fileB = open('C:\\tmp\\somefile.txt', 'r')
fileC = open('C:\\tmp\\somefile.txt', 'w')

#Read all lines in the files
linesA = fileA.readlines()
linesB = fileB.readlines()

#Iterate through the lines
for line1 in linesA:
    for line2 in linesB:
        if line1 and line2: #Check for empty lines
            if line1 == line2: #If lines match, write them to fileC
                fileC.write("%s\n" %(line1))