J'ai un fichier texte (a.txt). en voici une petite partie:

ENSG00000060642.6   0,023999998 0,015999999 0,666666667 0,006410256 0,006410256 1,000000073 0,016393442 0,016393442 1   0,020202022 0,030303031 1,499999908
ENSG00000149136.3   0,03508772  0,01754386  0,5 0,068627447 0,029411765 0,428571456 0,078947365 0,065789476 0,833333396 0,066666663 0,066666663 1
ENSG00000104889.4   0   0   #DIV/0! 0   0   #DIV/0! 0   0   #DIV/0! 0   0   #DIV/0!
ENSG00000157827.15  0,055555556 0,037037037 0,666666667 0,032258064 0,048387095 1,5 0,150000006 0,024999999 0,16666665  0,222222224 0,037037037 0,166666667
ENSG00000146067.11  0   0   #DIV/0! 0   0   #DIV/0! 0   0   #DIV/0! 0   0   #DIV/0!
ENSG00000167700.4   0,299999982 0   0   0,071428567 0,071428567 1   0   0   #DIV/0! 0   0   #DIV/0!
ENSG00000172137.14  0   0   #DIV/0! 0   0   #DIV/0! 0   0   #DIV/0! 1   0   0
ENSG00000178776.4   0   0   #DIV/0! 0   0   #DIV/0! 0   0   #DIV/0! 0   0   #DIV/0!

Je veux filtrer toutes les lignes, y compris "# DIV / 0!", Même s'il n'y a qu'un seul "# DIV / 0!", Et créer un nouveau fichier texte.

2
user3925736 9 août 2016 à 10:19

3 réponses

Meilleure réponse

Vous pouvez le faire de cette manière qui est incrémentielle (donc il ne lit pas le fichier entier en mémoire en même temps):

from itertools import ifilter

with open('a.txt', 'r') as inf, open('new.txt', 'w') as outf:
    outf.writelines(ifilter(lambda line: '#DIV/0!' not in line, inf))
1
martineau 9 août 2016 à 07:49
for line in open('a.txt').read().splitlines():
    if '#DIV/0!' not in line:
        print(line)
0
Szabolcs Dombi 9 août 2016 à 07:21
new_file = open('output.txt' , 'w') 
for line in open('a.txt').read().splitlines():
     if '#DIV/0!' not in line: 
           new_file.write(line)
new_file.close()
0
cedzz 9 août 2016 à 07:31