Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #57042

Re: finding data from two different files.

From Roy Smith <roy@panix.com>
Newsgroups comp.lang.python
Subject Re: finding data from two different files.
Date 2013-10-18 08:31 -0400
Organization PANIX Public Access Internet and UNIX, NYC
Message-ID <roy-F77370.08312718102013@news.panix.com> (permalink)
References <mailman.1193.1382062311.18130.python-list@python.org>

Show all headers | View raw


In article <mailman.1193.1382062311.18130.python-list@python.org>,
 "torque.india@gmail.com" <torque.india@gmail.com> wrote:

> Hi all,
> 
> I am new to python, just was looking for logic to understand to write code in 
> the below scenario.
> 
> I am having a file (filea) with multiple columns, and another file(fileb) 
> with again multiple columns, but say i want to use column2 of fileb as a 
> search expression to search for similar value in column3 of filea. and print 
> it with value of rows of filea.
> 
> filea:
> a 1 ab
> b 2 bc
> d 3 de
> e 4 ef
> .
> .
> .
> 
> fileb
> z ab 24
> y bc 85
> x ef 123
> w de 33 
> 
> Regards../ omps

Start by breaking this down into small tasks.  The first thing you need 
to be able to do is open filea, read it, and split each line up into 
columns.  You're going to want something along the lines of:

for line in open("filea"):
   col1, col2, col3 = line.split()

Play with that for a while and make sure you understand what's going on.  
There's the iteration over the lines of a file, the splitting of each 
line into a list of fields, and the unpacking of that list into three 
variables.  Each of those are very common operations that you'll be 
using often.

At some point, you're going to want to say, "I've got a line from fileb 
whose column 2 is 'ab'; what line from filea has 'ab' in column 3?"  
That call for a map.  In Python, it's called a dictionary.  As you read 
fileb, you'll want to build a map, something like:

map = {}
for line in open("filea"):
   col1, col2, col3 = line.split()
   map[col3] = line

Once you've done that, try:

>>> print map

and see what it gives you.  Then, read up on dictionaries

http://docs.python.org/2/tutorial/datastructures.html#dictionaries

and see if the hints I've given you are enough to get the rest of the 
way yourself.  If not, come back and ask more questions.

Oh, also, you didn't say what version of Python you're using.  My 
examples above assumed Python 2.  If you're using Python 3, some minor 
details may change, so let us know which you're using.

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

finding data from two different files. "torque.india@gmail.com" <torque.india@gmail.com> - 2013-10-18 07:18 +0530
  Re: finding data from two different files. Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-10-18 02:24 +0000
  Re: finding data from two different files. Roy Smith <roy@panix.com> - 2013-10-18 08:31 -0400
  Re: finding data from two different files. Jim Gibson <jimsgibson@gmail.com> - 2013-10-18 15:54 -0700

csiph-web