как извлечь определенные строки и столбцы из файла и сохранить его в другом файле - PullRequest
1 голос
/ 02 мая 2019

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

Я попытался прочитать файл и сохранить все строки в списке, но я не мог сделать больше.

Cycle 3 Down - 20_3.2_10_100_1                                                  
units of measure: atoms / barn-cm                                             
time (years)   

nuclide   1.000E-02 3.000E-02 1.000E-01 3.000E-01 1.000E+00 3.000E+00 1.000E+01

--------  --------- --------- --------- --------- --------- --------- --------- 

 ag109   9.917E-07 9.917E-07 9.917E-07 9.917E-07 9.917E-07 9.917E-07 9.917E-07
 am241   1.301E-07 1.389E-07 1.695E-07 2.565E-07 5.540E-07 1.349E-06 3.577E-06
 am243   8.760E-08 8.760E-08 8.760E-08 8.760E-08 8.759E-08 8.757E-08 8.752E-08
 cs133   2.083E-05 2.101E-05 2.112E-05 2.112E-05 2.112E-05 2.112E-05 2.112E-05
 eu151   4.979E-10 5.579E-10 7.679E-10 1.367E-09 3.458E-09 9.368E-09 2.935E-08
 eu153   1.128E-06 1.132E-06 1.132E-06 1.132E-06 1.132E-06 1.132E-06 1.132E-06
 gd155   4.398E-10 5.831E-10 1.081E-09 2.477E-09 7.048E-09 1.778E-08 3.786E-08
 mo95    1.317E-05 1.351E-05 1.466E-05 1.716E-05 1.960E-05 1.979E-05 1.979E-05
 nd143   1.563E-05 1.587E-05 1.626E-05 1.641E-05 1.641E-05 1.641E-05 1.641E-05
 nd145   1.181E-05 1.181E-05 1.181E-05 1.181E-05 1.181E-05 1.181E-05 1.181E-05
 np237   2.898E-06 2.944E-06 2.982E-06 2.985E-06 2.986E-06 2.989E-06 3.017E-06

Это часть файла, которую я хочу сохранить. Я хочу сохранить имя нуклида и значения последнего столбца.

nuclide=[]
with open ('filename.txt','r') as myfile:
     for line in myfile:
         nuclide.append(line)
     print(nuclide[4900]).find("ag109"))

У меня должен быть список, содержащий символ нуклида с последним значением столбца

1 Ответ

0 голосов
/ 02 мая 2019

Если вы хотите прочитать показанные вами данные, извлечь только строки данных, проанализировать их, чтобы извлечь первый и последний столбцы, а затем записать только первый и последний столбцы в файл, вот как вы можете это сделать:

import re

with open("/tmp/input.txt") as ifh:
    with open("/tmp/output.txt", "w") as ofh:
        while True:
            line = ifh.readline()
            if not line:
                break
            columns = re.split(r"\s+", line.strip())
            if len(columns) == 8 and  columns[0] != 'nuclide' and columns[0][0] != '-':
                ofh.write("{} {}\n".format(columns[0], columns[7]))

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

/ tmp / output.txt:

ag109 9.917E-07
am241 3.577E-06
am243 8.752E-08
cs133 2.112E-05
eu151 2.935E-08
eu153 1.132E-06
gd155 3.786E-08
mo95 1.979E-05
nd143 1.641E-05
nd145 1.181E-05
np237 3.017E-06

Это должно быть в состоянии обрабатывать очень большие файлы, так как я не читаю весь файл в память, а скорее читаю и записываю строки по одной.

...