[Tutor] Performing an union of two files containing keywords

Dave Angel davea at davea.name
Mon Feb 17 19:41:47 CET 2014


 Oscar Benjamin <oscar.j.benjamin at gmail.com> Wrote in message:
> On 17 February 2014 13:16, Dave Angel <davea at davea.name> wrote:
>> On 02/17/2014 06:12 AM, Oscar Benjamin wrote:
>>>
>>> Something like this:
>>>
>>> with open(r'D:\file3.txt', 'r+') as fout:
>>>      keywords_seen = set()
>>>      for filename in r'C:\File1.txt', r'C:\File2.txt':
>>>          with open(filename) as fin:
>>>              for line in fin:
>>>                  keyword = line.strip()
>>>                  if keyword not in keywords_seen:
>>>                      fout.write(line)
>>>                      keywords.add(keyword)
> 
> The line above should obviously be keywords_seen.add(keyword)
> 
>> You forgot to append the newline to strings in the write() method calls.
>>
>>                      fout.write(line + "\n")
> 
> Iterating over a file keeps the newlines:
> 
>>>> list(open('file1.txt'))
> ['file1\n', 'file2\n']
> 

Sorry,  I read your code too quickly and figured you had done an
 in-place strip(). Since you did not, you run the risk of
 encountering a file without trailing newline. 

I prefer to at least rstrip each line,  then add the newline back
 in when writing. 

-- 
DaveA



More information about the Tutor mailing list