Pergunta

Hi please how can I loop over a text file, identify lines with 0s at the last index of such a line, and delete those lines while retrieving the ones not deleted. Then also format the output to be tuples.

input.txt = 1 2 0 
            1 3 0 
            11 4 0.058529
            ...
            ...
            ...
            97 7 0.0789

Desired output should look like this

[(11,4,{'volume': 0.058529})]

Thank you

Foi útil?

Solução

Pass inplace=1 to the fileinput.input() to modify the file in place. Everything that is printed inside the loop is written to the file:

import fileinput

results = []
for line in fileinput.input('input.txt', inplace=1):
    data = line.split()
    if data[-1].strip() == '0':
        print line.strip()
    else:
        results.append(tuple(map(int, data[:-1])) + ({'volume': float(data[-1])}, ))

print results

If the input.txt contains:

1 2 0
1 3 0
11 4 0.058529
97 7 0.0789

the code will print:

[(11, 4, {'volume': 0.058529}), 
 (97, 7, {'volume': 0.0789})]

And the contents of the input.txt becomes:

1 2 0
1 3 0
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top