Hi Yogi, welcome to Python! yogi wrote: ... > if (str(gen) == str(row[0])): > print 'Match for 16 found Is the conversion to string really necessary? Even if it is, do it once for gen, when you define it: gen = '16' so you don't have to convert on every iteration of the loop. I think you want gen to be a integer, though, because you later compare it to other integers in your range().
... > for row[2] in range (rval0l,rval0u): > print row I don't think this bit is doing what you think it is. For each iteration you are assigning a value to the third element in the row list: row[2] = 6009890 row[2] = 6009891 ... row[2] = 6009938 etc. I don't think you want to loop over the range but instead want to check to see if row[2] is between rval0l and rval0u. You can do that by using if x in some_list which will return true if x is a member of the list. range() will give you the list of values to check against (but only create that list once unless it changes on each row you are processing and in your code example, it's not changing). Remember, it's easy and enlightening to test code on the Python command line: >>> rval0l = 6009890 >>> rval0u = 6009939 >>> range(rval0l,rval0u) [6009890, 6009891, 6009892, 6009893, 6009894, 6009895, 6009896, 6009897, 6009898, 6009899, 6009900, 6009901, 6009902, 6009903, 6009904, 6009905, 6009906, 6009907, 6009908, 6009909, 6009910, 6009911, 6009912, 6009913, 6009914, 6009915, 6009916, 6009917, 6009918, 6009919, 6009920, 6009921, 6009922, 6009923, 6009924, 6009925, 6009926, 6009927, 6009928, 6009929, 6009930, 6009931, 6009932, 6009933, 6009934, 6009935, 6009936, 6009937, 6009938] >>> my_range = range(rval0l,rval0u) >>> 6009893 in my_range True >>> 5 in my_range False gen = 16 idx_snp = 2 my_range = range(rval0l,rval0u) for row in file: snp = int(row[idx_snp]) if snp == gen: print 'Found %s' % gen if snp in my_range: print "Found match:", row Eric. PS, if your input file is as simple as your example, the csv module isn't getting you much benefit/complexity: for row in open("divs.map"): fields = row.split('\t') print fields _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor