Как найти минимальное значение из * .txt файла - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть *.txt файл, который содержит такие данные:

...
30 5.882973099631601
31 6.035463584639685
32 6.184276444600495
33 6.3336851616329435
34 6.492617147379082
35 6.683538372963013
36 6.841228384748939
37 6.999432758805214
...

Теперь я хотел бы найти минимальное значение (второй столбец), но я хотел бы отобразить его со значением изпервый столбец.Поэтому в этом случае я хотел бы напечатать эту строку как минимальную функцию, и она должна выглядеть следующим образом:

30 5.882973099631601

Я пытался сделать это с этим кодом, но язастрял.

 with open('measurements.txt', 'a') as j:
        j.write(str(r))
        j.write(" ")
        j.write(line[24:])
        j.write('\n')
        j.close()

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018
import csv

# preparing data - converting to array
rows = []
with open('sample.txt', mode='r') as infile:
    reader = csv.reader(infile, delimiter=" ")
    for row in reader:  # each row is a list
        rows.append(row)

# lambda function to filter min considering the second column
minimus = min(rows, key=lambda x: float(x[1]))

# done
print(minimus)
0 голосов
/ 03 декабря 2018

Для получения строки с минимальным значением:

min_row = ''  
min_val = 1000000                   # Considering this value to be the highest
'''
Loop for reading rows in source file
'''
a, b = row.split(' ')
b = float(b)
if b < min_val:
    min_val = b
    min_row = row
'''
End of loop
'''

Затем напишите 'min_row' в новом файле.

...