Пропускать фрагменты строк при чтении файла Python - PullRequest
0 голосов
/ 03 ноября 2018

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

numbersofsamples
Title
     data
     data
     data
      ...

Например:

999numberofsamples
title crvTitle
             0.0            0.866423
    0.0001001073           0.6336382
    0.0002002157           0.1561626
    0.0003000172          -0.1542121
             ...                 ...
1001numberofsamples
title nextCrv
    0.000000e+00        0.000000e+00
    1.001073e-04        1.330026e+03
    2.002157e-04        3.737352e+03
    3.000172e-04        7.578963e+03
             ...                 ...

Файл состоит из множества кривых и может иметь размер до 2 ГБ.

Моя задача - найти и экспортировать конкретную кривую, пропуская куски (кривые), которые мне не интересны. Я знаю длину кривой (количество образцов), поэтому должен быть способ перехода к следующему разделителю (например, число образцов), пока я не найду нужное название?

Я пытался использовать итератор для этого, к сожалению, безуспешно. Это правильный способ выполнить задачу?

Если это возможно, я не хочу сохранять данные в памяти.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Вам не нужно хранить все строки в памяти. Перейдите к нужному заголовку и сохраните только те права удержания, которые вы хотите:

with open('somefile.txt') as lines
    # skip to title
    for line in lines
        if line == 'title youwant':
            break
    numbers = []
    for line in lines:
        if 'numberofsamples' in line:
            break # next samples
        numbers.append(line)
0 голосов
/ 03 ноября 2018

Это общий способ пропустить строки, которые вам не нужны:

for line in file:
    if 'somepattern' not in line:
        continue
    # if we got here, 'somepattern' is in the line, so process it
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...