Извлечь данные из текстового файла в Python и записать в новый файл

У меня есть файл, подобный приведенному ниже, и я ищу способ прочитать все значения и записать их в новый файл с помощью Python.

Contact Angle (deg) 87.98 Wetting Tension (dy/cm) 2.576 Wetting Tension Left (dy/cm) 39.44 Wetting Tension Right (dy/cm) 39.44 Base Tilt Angle (deg) 0.00 Base (mm) 1.2414 Base Area (mm2) 1.2103 Height (mm) 0.5992 Tip Width (mm) 0.9480 Wetted Tip Width (mm) 0.9323 Sessile Volume (ul) 0.4752 Sessile Surface Area (mm2) 2.3382 Contrast (cts) 179 Sharpness (cts) 82 Black Peak (cts) 12 White Peak (cts) 191 Edge Threshold (cts) 86 Base Left X (mm) 3.592 Base Right X (mm) 4.835 Base Y (mm) 3.083 RMS Fit Error (mm) 4.248E-3 

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

 87.98 2.576 39.44 39.44 0 1.2414 1.2103 0.5992 0.948 0.9323 0.4752 2.3382 179 82 12 191 86 3.592 4.835 3.083 4.25E-03 

Прошло некоторое время, так как я использовал Python и даже рассматривал подобные проблемы, я ударил стену и, похоже, не нашел ответа (который, как я знаю, тривиален).

Может кто-нибудь мне помочь?

Я тестировал это на выборочных данных в вопросе, и он работает.

 infile = open('file.txt', 'r') outfile = open('outfile.txt', 'w') for l in infile: outfile.write(l.split()[-1] + '\n') infile.close() outfile.close() 

Это работает:

 # with block auto closes the files after the statements in it execute. It's good practice with open(yourFile) as f, open(newFile, 'w') as f2: for line in f: line_out = line.split()[-1].strip() f2.write(line_out + '\n') 
 answer = map(lambda a: a.strip().split()[-1], infile.readlines()) 

Одна линия! Ну, не совсем одна строка. В приведенной выше строке предполагается, что вы открыли infile используя infile = open("in.txt") . И тогда вам придется записать его в out = open("out.txt", "w"); out.writelines(answer) файл, что-то вроде out = open("out.txt", "w"); out.writelines(answer) out = open("out.txt", "w"); out.writelines(answer)

Детали:

  1. a.strip().split()[-1] разделяет каждую строку пробелами (вкладки / пробелы и т. д.) и принимает последний элемент (число) из каждой строки
  2. map(lambda... part применяет это к каждой отдельной строке файла