字符串比较无法识别匹配

时间:2016-07-27 19:32:39

标签: python string comparison

我在" origFile'中有一个网址列表这将被扩充并写入&ready;' readyFile'。我想将网址添加到readyFile'只有当他们还没有出现在&ready文件中时...

with open('bpBlacklist.txt', 'r') as origFile, open('bpBlacklistReady','r+') as readyFile :
    for line in origFile:       
        orig_string = line.strip()
        if orig_string in readyFile.read():
            None
        else: 
            readyFile.write( "'" + orig_string + "'," + '\n' )

    origFile.close()    
    readyFile.close()

现在,它只是将整个列表重写为&ready;' readyFile'每次我运行它。我试着移动"' + str +'" if语句之外的扩充,但问题仍然存在。

2 个答案:

答案 0 :(得分:1)

通过撰写readyFile.write(...),您的下一个readyFile.read()电话将被覆盖。您应该在with语句后立即将readyFile内容保存到变量中:

with open('bpBlacklist.txt', 'r') as origFile, open('bpBlacklistReady','r+') as readyFile :
     readyFileContent = readyFile.read()

答案 1 :(得分:0)

您的情况无法正常工作,因为read()方法会将整个文件作为字符串返回。您需要检查可迭代网址之间的成员资格。

而不是循环遍历文件并检查所有网址的成员资格,您可以使用set.difference()函数找到差异,然后编写额外的网址:

with open('bpBlacklist.txt', 'r') as origFile, open('bpBlacklistReady','r+') as readyFile :
    current = set(origFile)
    diffs = current.difference(readyFile.readlines())
    for url in diffs:
        readyFile.write(url + '\n')