Сложный синтаксический запрос - PullRequest
1 голос
/ 03 февраля 2012

У меня очень сложная проблема с анализом.Любые мысли будут оценены здесь.У меня есть файл test.dat. Анализируемый файл выглядит следующим образом:

*   Number                  =              40

Time =  0
  1   10.13   10   10.11   12   13
  .
  .

Time =  n
  1   10   10   10   12.50   13
  .
  .

Есть N временных блоков, и каждый блок имеет 40 строк, как показано выше.Я хотел бы добавить, например, 1-ю строку первого блока, затем 1-ю строку в блоке № 2 и т. Д. В новый файл -test_1.dat.Аналогично, 2-я строка каждого блока в test_2.dat и т. Д. Строки в блоке должны быть записаны как в новый файл _n.dat.Есть какой-либо способ сделать это?Число, которое я здесь предположил, равно 40, поэтому, если * число = 40, под каждым временным блоком будет 40 строк.

С уважением, Рис

1 Ответ

0 голосов
/ 03 февраля 2012

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

f = open('filename')
fileList = f.readlines()

Затем удалите часть заголовка вашего файла с помощью

fileList.pop(0)
fileList.pop(0)

Затем сделайте

outFileContents = {} # This will be a dict, where number -> content of test_number.dat
for outFileName in range(1,41): #outFileName will be the number going after the _ in your filename
    outFileContents[outFileName] = []
    for n in range(40): # Counting through the time blocks
        currentRowIndex = (42 * n) + outFileName # 42 to account for the Time = and blank row
        outFileContents[outFileName].append(fileList[currentRowIndex])

Наконец, вы можете перебрать outFileContents и записать содержимое каждого значения в отдельные файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...