Since you say that the file contains numbers separated by the tab character, you could use the csv module to process it. Note that I show 'statistic' since csv files contain headers that allow keys. If you do not have that or do not want to use it, just substitute the column index (in your case 3). If there is no header line, use the fieldnames parameter to set the column names.
import csv
ifile = open('file.csv', 'rb')
infile = csv.DictReader(ifile, delimiter='\t')
# If the first line does not contain the header then specify the header
try:
sortedlist = sorted(infile, key=lambda d: float(d['statistic']))
except ValueError:
#First line was the header, go back and skip it
ifile.seek(0)
ifile.next()
sortedlist = sorted(infile, key=lambda d: float(d['statistic']))
ifile.close()
# now process sortedlist and build an output file to write using csv.DictWriter()