Skip to content Skip to sidebar Skip to footer

Choosing Only Non-zeros From A Long List Of Numbers In Text File

I have a text file with a long list of numbers. I would like to choose only the non-zeros and make another text file. This is a portion of the input file: 0.00000E+00 0.00000E+0

Solution 1:

You're using regex again where you don't need to. You're also doing something exceedingly bizarre where you're using islice on the file. That's also unnecessary. You could just do this:

import io                                                                     

file = io.StringIO('''                                                        
0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  
0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  
0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  5.16677E-30  
9.61708E-28  1.18779E-25  9.73432E-24  5.29352E-22  1.91009E-20  4.57336E-19  
7.26588E-18  7.65971E-17  5.35806E-16  2.48699E-15  7.65973E-15  1.56539E-14  
2.12278E-14  1.91010E-14  1.14046E-14  4.51832E-15  1.18780E-15  2.07196E-16  
2.39824E-17  1.84193E-18  9.38698E-20  3.17431E-21  7.12271E-23  1.06050E-24  
1.04773E-26  6.86848E-29  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  
0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  
0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  
0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  
0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  
0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  
0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00                            
'''.strip())                                                                  

#################################
# Actual Answer to your problem #                                                                            
#################################  
values = []                                                                   
for line in file:                                                             
    values.extend(val for val in line.strip().split() if val != '0.00000E+00')

with io.StringIO() as out:           
    for i, val in enumerate(values): 
        if i and not i % 6:          
            out.write('\n')          
        out.write(val+' ')           
     out.seek(0)
     print(out.read())

Post a Comment for "Choosing Only Non-zeros From A Long List Of Numbers In Text File"